Java 解析JSON 利用GJson简单解析一个数组JSON

JSON 格式文件非常常见,解析Json的第三方jar 也非常多,常见的就是谷歌与阿里的,今天就是利用谷歌的Gjson完成一个数组的解析
1.准备maven文件配置

<dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.2.4</version>
        </dependency>

2.准备一个测试的JSon文件

[
  {"name": "tom",
    "personid":"k001",
    "address": "不知道",
    "tel": "10086",
    "mail": "4432432@qq.com",
    "fax": "43242322"
  },
  {"name": "ton",
    "personid":"f003",
    "address": "张三",
    "tel": "42143214",
    "mail": "fsdf@qq.com",
    "fax": "1000000"
  }
]

3.根据Json文件创建一个类

class Person{
    private String personid;
    private String name;
    private String address;
    private String tel;
    private String fax;
    private String mail;

    public Person() {
    }

    public Person(String personid, String name, String address, String tel, String fax, String mail) {
        this.personid = personid;
        this.name = name;
        this.address = address;
        this.tel = tel;
        this.fax = fax;
        this.mail = mail;
    }

    @Override
    public String toString() {
        return "peopel{" +
                "personid='" + personid + '\'' +
                ", name='" + name + '\'' +
                ", address='" + address + '\'' +
                ", tel='" + tel + '\'' +
                ", fax='" + fax + '\'' +
                ", mail='" + mail + '\'' +
                '}';
    }

    public String getPersonid() {
        return personid;
    }

    public void setPersonid(String personid) {
        this.personid = personid;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getTel() {
        return tel;
    }

    public void setTel(String tel) {
        this.tel = tel;
    }

    public String getFax() {
        return fax;
    }

    public void setFax(String fax) {
        this.fax = fax;
    }

    public String getMail() {
        return mail;
    }

    public void setMail(String mail) {
        this.mail = mail;
    }
}

4.具体实现

public class Mtest {
    public static void main(String[] args) throws IOException {
        InputStream resourceAsStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("userlist.json");//加载
        InputStreamReader in=new InputStreamReader(resourceAsStream);//转换为reader
        JsonReader reader= new JsonReader(in);//装载

        List<Person> ls= new ArrayList<>();//准备一个集合
        
        reader.beginArray(); //开始读取一个集合
        while (reader.hasNext()){
            ls.add(parseperson(reader));//通过自定义方法实现内部对象
        }
        reader.endArray();//结束
        
        //验证
        ls.forEach((sss)->{
            System.out.println(sss.toString());
        });
    }
    //
    private static Person parseperson(JsonReader js) throws IOException {
        Person ps=new Person();//准备一个对象
        js.beginObject();//开始读取对象
        //遍历对象
        while (js.hasNext()){
            String tag=js.nextName();//获取对象名
            if("name".equals(tag)){
                ps.setName(js.nextString());
            };
            if("personid".equals(tag)){
                ps.setPersonid(js.nextString());
            };
            if("address".equals(tag)){
                ps.setAddress(js.nextString());
            };
            if("tel".equals(tag)){
                ps.setTel(js.nextString());
            };
            if("fax".equals(tag)){
                ps.setFax(js.nextString());
            };
            if("mail".equals(tag)){
                ps.setMail(js.nextString());
            };
        }
        js.endObject();//结束读取对象
        return ps;
    }

}

结果展示

peopel{personid=‘k001’, name=‘tom’, address=‘不知道’, tel=‘10086’, fax=‘43242322’, mail=‘4432432@qq.com’}
peopel{personid=‘f003’, name=‘ton’, address=‘张三’, tel=‘42143214’, fax=‘1000000’, mail=‘fsdf@qq.com’}

总结:在解析时要先看清楚要解析的结构,【】是数组,{}是对象。实现应用中嵌套使用的较多。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值