什么是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); } } }