1.写在前面
通过郭神的代码和说明加上这两天查看的资料,学到了很多以前没注意没总结的json知识。通过这篇文章可以了解到以下几点。
A. json数据形式,一般有三种
jsonObject:{key:value},只要是这种形式的json数据,一定要写成key-value。并且如果是这样的数据,不管多复杂,如下图(郭神的数据),如果使用JSONObect解析,第一步一定是将字符串数据变成JSONObject,如下
JSONObject jsonObject = new JSONObject(获取到的string数据);
JSONArray:[],这里可以分为两种,[{},{},{}]和[“”,”“,111,true],不管哪一种这数组中一个要至少有一个数据,并且如果要使用JSONArray解析,不管多复杂的数据结构,见下图(郭神的数据),第一步都是使用下面这行代码,
JSONArray jsonArray = new JSONArray(string类型的数据);
这是他们的共同点。不同点,是[{},{}]这种类型的JSONArray,{}对象里面一定是JSONObject,即一定要写成key-value形式。
B. 学习到了GSON解析和JSONObject或者JSONArray解析的区别,GSON解析如果要获取整个json数据中某一个字段的数据,(下面有例子),一般通过把bean写好,然后通过方法,直接可以获取字段外面的对象,然后通过对象通过get或者.属性获取数据。但是JSONObject或者JSONArray需要一层层剥洋葱样剥到某个字段的数值,并且要获取最外层对象,还要一层层从里面的对象塞数据,知道塞到我们想要的。
C. 对于一个json数据,我们想要什么字段的数据就在bean里面写好自己想要数据的字段,一定要写准确,如果担心字段的名字不符合我们java定义属性的名字,可以通过GSON库里面SerializedName解决,还是一样,一定要写匹配。如下图,整个json数据中,我只是想要获取,这两个字段的value也是可以的。(下面例子)
"lat":"28.197000","lon":"112.967000"
D. 发现一个查看json数据的好工具HiJson 2.1.2_jdk64.exe,可以通过它将复杂的json数据格式化。当然此类的工具很多,在线的也很多,如果,见图。
2. 代码
A. 首先上面我说了很多非常确定的言语,现在验证下。
比较这两个,明显可以知道上面这个不是json数据,放到工具验证,见图
{
"a":"bbb","b":2,"c":true,"d"}
{
"a":"bbb","b":2,"c":true,"d":22.22}
还有这种
["a",true,22.2