JSON数据格式分析

页面导航:首页 > 网络编程 > JavaScript > JSON数据格式分析

JSON数据格式分析

来源: 作者: 时间:2016-02-04 09:15 【

1、JSON介绍JSON是一种数据结构比较简单,轻量级的,易于存储的数据结构形式。很方便人的阅读,也方便机器的编写和解析。JSON是一种完全独立于文本语言的文本结构,我们既可以在

1、JSON介绍

JSON是一种数据结构比较简单,轻量级的,易于存储的数据结构形式。很方便人的,也方便机器的编写和解析。

JSON是一种完全独立于文本语言的文本结构,我们既可以在js代码中写json数据,也能在java、php等语言中使用这种文本形式。

 

2、JSON结构分析

JSON只有两种数据结构模型:数组和对象。数组常用的表示是JSONArray,对象常用的表示是JSONObject。

JSON的存储结构采用的是键值对的形式表现的,熟悉JAVA开发的人应该很清楚,是实际上是map的存储方式,一个key对应一个value。当然,在不同语言中,可能理解方式上会有不同的差异,的数据结构中可能被理解为数据字典,C中可能被理解为结构体等数据类型。关于这个,等下我们会举例说明。

 

3、JSON数据举例

可能有的人对json数据形式并不熟悉,这里给出一个json数据的示例,这是从一段代码中截取出来的内容,可能大家看起来会觉得很奇怪,但是这是一个完整的json格式的字符串,包括了json定义的两中数据格式,数组和对象:

 

{
id: 20150104A000SB00,
thumbnails_qqnews: [
http://inews.gtimg.com/newsapp_ls/0/34260782_150110/0
],
thumbnails: [
http://inews.gtimg.com/newsapp_ls/0/34260782_150110/0
],
articletype: 0,
timestamp: 1420373100,
time: 2015-01-04 20:05:00,
commentid: 1074737367,
url: www.2cto.com
title: 武媚娘传奇→武大头传奇,
tag: [ ],
abstract: 男人在年轻的时候都希望能拥有一个花枝招展,外表光鲜亮丽的那种女人。可是随着岁月的沉淀,尤其是当他有了自己的一番事业和丰富的人生阅历时,就会发现自己当初的想法是多么幼稚,因为,一个根本就不够!,
author: [ ],
chlid: 1796,
origUrl: www.2cto.com
show_expr: 1,
flag: 0,
picShowType: 0,
chlname: 捧腹网,
chlmrk: 精选搞笑图片,无节操、有内涵、巨邪恶、神回复,看点多,笑点多!,
chlsicon:  www.2cto.com
chlicon:  www.2cto.com
source: 捧腹网,
wechat: pengfuwang001,
PlacementId: 9079537218569440795,
SubAdOn: 0,
commentPlacementId: ,
openAdsComment: 0
}

4、解析方式

 

在不同的语言中,可能有不同的解析方式,这里我们只讨论在环境中的解析方式,与java中是一致的。

前面我们说过,JSON是采用的map集合形式的封装,是键值对的形式,那么我们在取出数据的时候,就会采用get方法,如下两句代码:

 

JSONObject jsonObject = new JSONObject(jsonString);
JSONObject msgJsonObject = jsonObject.getJSONObject(msg);
这两句代码的意思是说,我们将获得的json字符串,实例化成为一个json对象,然后在这个json对象中,获取得到msg这个对象。

 

 

JSONArray temp = product.getJSONArray(photos);
int length = temp.length();
for (int i = 0; i < length; i++) {
	String msg = temp.optString(i);
	imgList.add(msg);
}
这段代码的意思是从product这个json对象中,获得一个名为photos的json数组对象,然后将之存储在一个集合中。

 

 

product.getString(title)
这一句代码就比较简单容易理解了,意思是获取一个title的对象,而这个对象是一个String类型的对象。

 

 

5、总结

在上面的json解析中,我们只是简单的抽取了一些比较重要的代码片段,并没有完整的展示如何解析一段代码,这里有两个问题需要注意:

(1)、在处理json字符串的时候,需要处理一个异常,名为JSONException,通常是json的数据格式不对或者数据不完整。

(2)、在获取json字符串中的值的时候,如果试用get获取,可能会出现该字符串不存在而导致报错的情况,可以试用opt获取,代码如下:

 

product.optString(title)
但是这里会出现一个问题,那就是如果没有title这个字符串对象,这句话也是不会报错的,但是程序的执行结果却不是我们预期那样的。

 

 

Tags:

文章评论

最 近 更 新
热 点 排 行
Js与CSS工具
代码转换工具

<