JSON文件分析

参考:http://blog.youkuaiyun.com/yuzhangsir/article/details/76599940

一、什么是JSON?

    1、JSON:JavaScript 对象表示法(JavaScript Object Notation)。
    2、JSON 是存储和交换文本信息的语法。类似 XML。

    3、JSON 比 XML 更小、更快,更易解析。

    说白了,JSON就是一种数据交换格式

二、相对于xml的优势

    XML 是一种纯文本格式,所以适合在网络上交换数据,但是 XML 格式比较复杂。

    相对于xml,JSON更短,读写的速度更快,而且能够使用数组。

三、语法规则

    (1)数据在名称/值对中 

firstName : "John" 

    (2)数据由逗号分隔

    (3)花括号保存对象

{ firstName:"John" , lastName:"Doe" }

    (4)方括号保存数组,数组内可以包含多个对象

{
employees: [
{ firstName:"John" , lastName:"Doe" },
{ firstName:"Anna" , lastName:"Smith" },
{ firstName:"Peter" , lastName:"Jones" }
]
}

四、JSON支持的数据格式

  • 数字(整数或浮点数)
  • 字符串(在双引号中)
  • 逻辑值(true 或 false)
  • 数组(在方括号中)
  • 对象(在花括号中)
  • null

五、注意事项

  • JSON 规定字符集是UTF-8,字符串必须使用"",Object 的键也必须使用""
  • 数组或对象的最后一个成员,不能加 逗号
  • 注意要善于使用HiJSON来检测代码的正确性,路径:E:\HiJson   将要验证的json代码拷贝过去,点击格式化。

六、实例

{
    versionName: "2.0",
    versionDes: "新版本的描述信息",
    versionCode: "2",
    download: "http:localhost:3-13"
}

七、解析JSON

          解析JSON一定要掌握两条规则

          1.如果看到的是{},使用JSONObject

          2.如果看到的是[],使用JSONArray

          下面直接上案例

        (1)纯对象的解析,用从服务器上拿下来的数据做案例

{
    versionName: "2.0",
    versionDes: "新版本的描述信息",
    versionCode: "2",
    download: "http:localhost:3-13"
}
                //[6]通过工具类,将流转换成字符串
                String json = StreamUtil.Stream2String(inputStream);
                Log.i("json数据",json);
                //[7]解析json
                JSONObject jsonObject = new JSONObject(json);
                //[8]挨个解析
                String mVersionName = jsonObject.getString("versionName");
                String mVersionDes = jsonObject.getString("versionDes");
                String mVersionCode = jsonObject.getString("versionCode");
                String mDownload = jsonObject.getString("download");

                Log.i("数据",mVersionName);
                Log.i("数据",mVersionCode);
                Log.i("数据",mVersionDes);
                Log.i("数据",mDownload);

(2)对象组合类型的解析

{
    "love": {
        "one": "sing",
        "two": "read"
    },
    "name": "gx"
}
                //[6]通过工具类,将流转换成字符串
                String json = StreamUtil.Stream2String(inputStream);
                Log.i("json数据",json);
                //[7]解析json
                JSONObject jsonObject = new JSONObject(json);
                String name = jsonObject.getString("name");
                //拿到json对象
                JSONObject jsonObject1 = jsonObject.getJSONObject("love");
                String one = jsonObject1.getString("one");
                String two = jsonObject1.getString("two");
                Log.i("数据",name);
                Log.i("数据",one);
                Log.i("数据",two);

(3)对象、数组 组合类型解析

{
    name:"gx",
    data:{
	wendu:"20",
	cast:[
	{low:"19",date:"6日"},
	{low:"11",date:"5日"}
	]
    }
}
//[6]通过工具类,将流转换成字符串
                String json = StreamUtil.Stream2String(inputStream);
                Log.i("json数据",json);
                //[7]解析json
                JSONObject jObject = new JSONObject(json);
                String name = jObject.getString("name");
                
                JSONObject jObject1 = jObject.getJSONObject("data");
                String wendu = jObject1.getString("wendu");
                
                JSONArray jArray = jObject1.getJSONArray("cast");
                for(int i=0;i<jArray.length();i++){
                    JSONObject jObject2 = jArray.getJSONObject(i);
                    String low = jObject2.getString("low");
                    String date = jObject2.getString("date");
                    
                    Log.i("数据",low);
                    Log.i("数据",date);
                }
                Log.i("数据",name);
                Log.i("数据",wendu);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值