json 解析

JSON官网http://www.json.org,上面有所用语言对应的json工具。

http://my.oschina.net/sammy1990/blog/272510

--------------------------------------------------------------------------------

JSON Vs XML

1.JSON相对于XML来讲,同样的信息量,用json表述比xml描述数据量小。

2.JSON和XML的数据可读性基本相同
3.JSON对数据的详细描述没有XML好

--------------------------------------------------------------------------------

json就是一串有规范的字符串

json最外层有两种,对象{}或数组[]。

json对象:{k:v,k2:v2,k3:v3},对应java的map或类类型

json数组:[v,v2,v3],对应java的list或数组。

v值类型可以是:

null

对象

数组

字符串(在双引号内)

数字(整数或者浮点数)

逻辑值(true 或 false)

--------------------------------------------------------------------------------

json官方包是org.json.jar(android里自带了这个包)可以到官网现在源码导出这个jar包。

大部分json工具包提供了以下对象

JSONObject:json 对象(内部就是一个HashMap,map可以直接转成json对象)

JSONArray:json 数组(内部就是一个ArrayList,list可以直接转成json)

--------------------------------------------------------------------------------

json解析:

例如:

//json对象解析
String json1="{'k1':null,'k2':{'k1':'v1'},'k3':['v1','v2'],'k4';'v4','k5':7,'k6':true,'k7':false}";
JSONObject jsonObject=new JSONObject(json1);
//k1解析
JSONObject nullObject=jsonObject.getJSONObject("k1");
//k2解析
JSONObject k2JSONObject=jsonObject.getJSONObject("k2");
String k2k1String=k2JSONObject.getString("k1");
//k3解析
JSONArray k3JSONArray=jsonObject.getJSONArray("k3");
String k3v1=k3JSONArray.getString(0);
String k3v2=k3JSONArray.getString(1);
//k4解析
String k4String=jsonObject.getString("k4");
//k5解析
int k5int=jsonObject.getInt("k5");
//k6解析
boolean k6boolean=jsonObject.getBoolean("k6");
//k7解析
boolean k7boolean = jsonObject.getBoolean("k7");
//json数组解析
//JSONArray 存的类型是相同的
String json2="['v1','v2']";
JSONArray jsonArray=new JSONArray(json2);
for (int i=0;i<jsonArray.length();i++){
    jsonArray.getString(i);
}

Gson解析json是同java的反射机制解析的json对象对应一个java对象,json对象的每个key必须与

java的属性相同名。json数组对应java ArrayList。null 数字 boolean都可以按字符串解析。

//Gson解析json 对象
//"{'k1':null,'k2':{'k1':'v1'},'k3':['v1','v2'],'k4':'v4','k5':7,'k6':true,'k7':false}"
//根据json串构建bean类型
class KBean{
    //public Object k1;
    public String k1;
    public K2 k2;
    public ArrayList<String> k3;
    public String k4;
    //public int k5;
    //public boolean k6;
    //public boolean k7;
    public String k5;
    public String k6;
    public String k7;

    class K2{
        String k1;
    }
}

String json1="{'k1':null,'k2':{'k1':'v1'},'k3':['v1','v2'],'k4':'v4','k5':7,'k6':true,'k7':false}";
KBean kbean =new Gson().fromJson(json1,KBean.class);
Toast.makeText(this,kbean.k1+" "+ kbean.k3.get(0)+" "+kbean.k5+" "+ kbean.k6, Toast.LENGTH_LONG).show();
//Gosn json数组解析
String json2="['v1','v2']";
Type listType=new TypeToken<ArrayList<String>>(){}.getType();
ArrayList<String> list=new Gson().fromJson(json2,listType);
Toast.makeText(this, list.get(0), Toast.LENGTH_LONG).show();

相关推荐