android中-----JSON数据解析

什么是JSON

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

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

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

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

 

JSON数据格式的特点 JSON VS XML

android中-----JSON数据解析

为什么使用 JSON?

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

相比 XML 的不同之处

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

 

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

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

android中-----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);        

        }

    }

}

你可能感兴趣的:(android)