Android中解析JSON总结

来源:互联网 发布:同性电影推荐知乎 编辑:程序博客网 时间:2024/03/29 06:03

前言:

1>认识JSON

JSON 语法规则

JSON 语法是 JavaScript 对象表示法语法的子集。

  • 数据在名称/值对中
  • 数据由逗号分隔
  • 花括号保存对象
  • 方括号保存数组

JSON 名称/值对

JSON 数据的书写格式是:名称/值对。

名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值:

"firstName" : "John"

这很容易理解,等价于这条 JavaScript 语句:

firstName = "John"


JSON 值

JSON 值可以是:

  • 数字(整数或浮点数)
  • 字符串(在双引号中)
  • 逻辑值(true 或 false)
  • 数组(在方括号中)
  • 对象(在花括号中)
  • null

JSON 对象

JSON 对象在花括号中书写:

对象可以包含多个名称/值对:

{ "firstName":"John" , "lastName":"Doe" }


JSON 数组

JSON 数组在方括号中书写:

数组可包含多个对象:

{
"employees": [
{ "firstName":"John" , "lastName":"Doe" }, 
{ "firstName":"Anna" , "lastName":"Smith" }, 
{ "firstName":"Peter" , "lastName":"Jones" }
]
}

在上面的例子中,对象 "employees" 是包含三个对象的数组。每个对象代表一条关于某人(有姓和名)的记录。


更多关于JSON的内容可参考JSON教程


2>JSON与XML的比较

比起XML,JSON的主要优势在于它的体积更小,在网络上传输时可以节省流量;

但缺点是语义性较差,看起来不去XML直观;


3>JSON文件内容展示

下面,我们就以上述的JSON数组employees为例,将其拷贝进本应用的文件夹下,

将这个JSON文件命名为test.json,然后对其进行解析;test.json,其内容如下:





代码示例如下:

MainActivity:

package com.example.administrator.testparsejson;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android.view.View;import org.json.JSONArray;import org.json.JSONObject;import java.io.BufferedReader;import java.io.File;import java.io.FileReader;public class MainActivity extends AppCompatActivity {    private String stringJSON;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }    public void parseJSON(View view){        try {            /****             * 获取JSON文件             * **/            File file = new File(getFilesDir(),"test.json");            BufferedReader bufferedReader = new BufferedReader(new FileReader(file));            String line;            StringBuffer stringBuffer = new StringBuffer();            while ((line = bufferedReader.readLine()) !=null){                stringBuffer.append(line);            }            String stringJSON = stringBuffer.toString();            /***             * 解析JSON文件             * **/            JSONObject jsonObject = new JSONObject(stringJSON);            JSONArray jsonArray = jsonObject.getJSONArray("employees");            for(int i=0; i<jsonArray.length(); i++){                JSONObject object = jsonArray.getJSONObject(i);                Log.e("firstName",object.getString("firstName"));                Log.e("lastName",object.getString("lastName"));            }        } catch (Exception e) {            e.printStackTrace();        }    }}

运行结果如下:


总结:

1>

关于JSON的解析其实是很简单的,关键是需要去弄清楚JSON的数据格式的组织形式;

2>

在本示例中,已提前将一个JSON文件拷贝进了本应用的文件夹下,在这个前提下,再去进行JSON的解析的;


源码:

解析JSON总结示例源码

0 0
原创粉丝点击