android中JSON数据解析

什么是JSON

1.JSON(JavaScript Object Notation):是一种基于JavaScript语言的轻量级的数据交换格式

2.JSON数据是一系列键值对的集合

3.JSON已经被大多数开发人员接受,在网络数据的传输当中应用非常广泛

4.JSON相对于XML来讲解析稍微方便一些

JSON数据格式的特点 JSON VS XML

为什么使用 JSON?

对于 AJAX 应用程序来说,JSON 比 XML 更快更易使用:

相比 XML 的不同之处

  • 没有结束标签
  • 更短
  • 读写的速度更快
  • 能够使用内建的 JavaScript eval() 方法进行解析
  • 使用数组
  • 不使用保留字

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

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

从上到下的符号解说

[{"name":"zhangsan","age":20},{"name":"lisi","age":30}]

1.[是开始解析数组

2. {开始解析对象

3."name":"zhangsan"解析解析键值对

4."age":20解析解析键值对

5.  }解析对象结束

6.     {开始解析对象

7."name":"lisi" 解析键值对 

8."age":30  解析键值对 

9.    }解析对象结束

10.    ] 解析数组结束

 输出结果:

上面是输出结果,下面是具体代码实现:

这段代码讲解如何用的 JsonReader 
 1 public class JsonUtils{
 2     public void parseJson(String jsonData){
 3         try{
 4             //如果需要解析JSON数据,首先要生成一个JsonReader对象
 5             JsonReader reader = new JsonReader(new StringReader(jsonData));
 6             reader.beginArray();    //开始解析数组
 7             while(reader.hasNext()){    //hasNext就是 有没有下一组 键值对
 8                 String tagName = reader.nextName();        //reader.nextName()  得到下一个键值对的Name
 9                 if(tagName.equals("name")){      
10                     System.out.println("name--->" + reader.nextString());
11                 }
12                 else if(tagName.equals("age")){        //age是 数字,不用加引号
13                     System.out.println("age--->" + reader.nextInt());   //nextInt 得到下一个 键值对的 整形数字  
14                 }
15                 
16             } 
17             reader.endObject();
18         }
19         reader.endArray();
20     }
21     catch(Exception e){
22         e.printStackTrace();    
23    }
24 }
25 }
public class MainActivity extends Activity{
    //  \" 转义字符
    private string jsonData = "[{\"name\":\"Michael\",\"age\":20},{\"name\":\"Mike\",\"age\":21}]";
    private Button button;

    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        button = (Button)findViewById(R.id.buttonId);
        button.setOnClickListener(new ButtonListener());
    }

    private class ButtonListener implements OnClickListener{
    
        public void onClick(View v){
            JsonUtils jsonUtils = new JsonUtils();
            jsonUtils.parseJson(jsonData);        
        }
    }
}
原文地址:https://www.cnblogs.com/firecode/p/2478180.html