JSONObject以及GSON解析Json文件之Json分析

首先看这次举例的Json文件,我觉得文件不应该太多无关紧要的影响阅读的东西,但是也需要具有概括性,所以自己编写了一个Json文件,然后试着自己去解析

{
"name":"jiangker",
"age":18,
"love":["run","swmmnig"],
"friends":[
{
"name":"li",
"age":16
},
{
"name":"power",
"age":17
},
{
"name":"tuo",
"age":19
}]
}

首先看我对于Json文件解析的总结,就是大括号表示一个类,大括号中的元素就是类中的变量,中括号表示的就是一个集合。

比如说这个Json文件其中的name、age、love、friends就是其中的变量。而对于这些成员变量来说name就是一个String类型的,age就是一个int类型的,love就相当于一个String类型的数组,其中有两个元素。对于看似复杂的friends也是,是一个特殊的Friends类别的集合。用这种方式理解,之后的更复杂的类型也可以简化成这些东西。

 

JSONObject解析

对于这种解析方式来说,这是一种谷歌自带的解析方式,也不需要去添加资源包就可以直接使用。Json文件无非就分为类和集合,对于类来说使用JSONObject去获取,JSONObject自带很多种类型的元素获取方式

        JSONObject jsonObject = new JSONObject(data);
        String show = jsonObject.getString("name");

对于集合来说就可以使用JSONArray去解析,首先是获取到这个集合的整体的字符串

JSONObject jsonObject = new JSONObject(data);
String show = jsonObject.getString("love");

然后再通过用JSONArray去解析成数组

 JSONArray jsonArray = new JSONArray(show);

然后再通过for循环去遍历这个jsonArray,但是这里的遍历不支持foreach的方式去进行

for(int i = 0; i < jsonArray.length(); i++){
   show = (String)jsonArray.get(i);
}

这里获取可以直接使用getString去获取String对象,也可以使用get去获取一个Object对象来强转。

对于集合中的元素是一个特殊类的对象的时候,就可以在for循环中使用getJSONObject去获取这个对象,然后开始用之前同样的方法去解析这个JSONObject

for(int i = 0; i < jsonArray.length(); i++){
    JSONObject json = jsonArray.getJSONObject(i);
    show = json.getString("name");
}

GSON解析

要使用Gson首先就是添加依赖库

implementation 'com.google.code.gson:gson:2.8.4'

然后用Gson去解析Json,主要的问题就是Java Bean的编写,如果看了一下之前对于Json文件的分析,在这里编写Java Bean就会比较容易了,反正总的来说就是遇到大括号就理解是一个类,遇到中括号就当作是一个集合,所以看下面的代码

public class Person {
    
    private String name;
    private int age;
    private String[] love;
    private Friends[] friends;

    class Friends{
        
        private String name;
        private int age;

    }
}

这里省略了所有变量的Get和Set方法,方便于去观察里面的结构。

然后最后就是

Gson gson = new Gson();
//常用的fromJson方法就是这样,第一个为获取到的String类型的数据,第二个参数为刚才编辑的Java Bean类,返回的就是一个类的实例
Person person = gson.fromJson(data,Person.class);

然后就可以用这个对象去获取自己想要的其中的数据了。

 

对于具体怎么去使用GSON这个库,相信网上有太多太多这方面的东西了,这篇文章主要就是去分析Json文件,方便理解解析格式的编写。因为这两天想找具体这样的的确没找到,要么是Json文件太复杂篇幅太长以及都是被一笔带过了,仿佛没人遇到这方面的问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值