Android 解析JSON数据——认识JSON

来源:互联网 发布:淘宝城四期 编辑:程序博客网 时间:2024/05/16 09:37


    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它基于ECMAScript的一个子集,JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。
    也就是说JSON是一种格式,它可以用两种结构表示:①JSONObject ②JSONArray,下面我们通过Android提供的官方文档来了解一下。

 JSONObject:

Android官方文档
我简单翻译一下:
    JSONObject是一个以键值对形式存在的无序集合,它的格式为:{id:10001,name:jack},支持boolean,JSONArray,JSONObject,Number,String等类型的数据,JSONObject可以通过符合JSON格式的字符串构造,JSONObject对象可以通过get(String  name),opt(String  name)得到数据。区别在于get()方法能抛出异常,而opt()方法利用默认数据代替异常。

 JSONArray:

Android官方文档

    jsonArray的数据是有序排列的。它的格式为[{id:1001,name:jack},{age:15}],与JSONObject一样,可以通过get(int index)和opt(int index)方法返回数据,只是方法的参数不一样,它所能包含的数据类型和JSONobject一样。
    我们能够发现,jsonArray可保存jsonArray和jsonObject,同理,jsonObject也可以保存jsonArray和jsonObject。这两种结构是相互想通的,正如,我中有你,你中有我。那么我们到底在开发时使用哪种结构呢?我们不妨先比较一下,它们两者的区别!
    区别一:jsonObject是无序的,jsonArray是有序的,也就是说你将一个合法的元素扔到jsonObject的对象中,这个对象并不知道你扔进去的数据所在的序号,相反,jsonArray是能够记住你扔进去每个元素索引。
    区别二:get()和opt()方法里面的形参的的数据类型不同。 jsonArray 是 通过索引返回元素,jsonObject通过键名返回元素。
    联系:其实这两个区别说的都是一回事,因为jsonObject本来就是无序的,肯定不能通过索引返回元素,同理,jsonArray结构里面没有提供键值(K-V),自然也就没有办法通过键值返回元素,如果在使用它们的构造函数时,将JSONObject格式的数据转化为JSONArray格式的数据,编译器不会出错,但是程序将会崩溃。
    总结:如果你想直接,明了的得到某个数据,那就使用jsonObject,使用键值对的方式,肯定会帮助到你,如果返回的是大量数据里面的元素格式相同,或许可能会遍历,那就使用jsonArray。但是因为这两种格式太灵活了,到底如何取舍,还需要更根据您的实际情况来决定。

0 0