json解析

json数据是常见的一种互联网传输数据格式,这里记录了json解析的通用方法

JSON(JavaScript Object Notation)JavaScript对象表示法

一种简单的数据格式,比xml更轻巧。JSON是JavaScript的原生格式,这意味着在JavaScript中处理JSON数据不需要任何特殊的API或工具包

JSON的规则

  • 映射用冒号(":")表示。名称:值
  • 并列的数据名称之间用逗号(",")分隔。名称1:值1,名称2:值2
  • 映射的集合(对象)用大括号("{}")表示。{名称1:值1,名称2:值2}
  • 并列数据的集合(数组)用方括号("[]")表示
[
    {名称1:值1,名称2:值2},
    {名称1:值1,名称2:值2}
]
  • 元素值可具有类型:string,number,object,array,true,false,null

JSON的两种格式

JSON对象的格式

写法:{JSON数据名称1:JSON数据的值1,JSON数据名称2:JSON数据的值2...}

{"name":"zhangsan","age":"20","addr":"nanjing"}

JSON数组的格式

写法:[JSON对象1,JSON对象2...]

[{"name":"lucy","age":20},{"name":"mary","age":30}]

JSON的解析

有很多的JSON开源框架,例如org.json,json-lib,gson等。常用org.json
官网:http://www.json.org/java/
常见API:(将json字符串转化成JSONObject对象)

  • JSONObject jb = new JSONObject(String source)
  • Object get(String key)
  • Int getInt(String key)
  • String getString(String key)
  • XXX getXXX(String key)
  • JSONArray getJsonArray(String key)

将json字符串转出JSONArray对象

JSONArray jsArray = new JSONArray(String source)

JSON解析示例

public void jsonTest() throws Exception{
    String jstring = "{'name':'zhangsan','age':'20'}";
    //通过一个具有json格式的字符串就可以创建一个json对象
    JSONObject obj = new JSONObject(jstring );
    //获取到json对象以后就可以通过key去取值,根据需求选择相关的getXXX方法
    //可以获取的数据类型有:string,int,long,double,boolean,object
    String name = obj.getString("name");
    int age = obj.getInt("age");
    System.out.println("name:"+name+",age:"+age);

    String jsonArray = "[{'name':'zhangsan','age':'20'},{'name':'lisi','age':'30'}]";
    //根据一个具有json数组格式的字符串,创建一个json数组对象
    JSONArray array = new JSONArray(jsonArray);
    for (int i = 0; i < array.length(); i++) {
        //根据索引取出每一个jsonobject
        JSONObject jsonObject = array.getJSONObject(i);
        name = jsonObject.getString("name");
        System.out.println(name);
    }
}
原文地址:https://www.cnblogs.com/cj5785/p/10664695.html