使用Gson解析常见json字符串

日常开发中常遇到的json字符串主要有三种:

1)简单的json object  字符串

 

      String jsonObjectStr = "{\"name\":\"zhangsan\",\"age\":\"18\"}";

 

2)json array 字符串

 

      String jsonArrayStr = "[{\"name\":\"zhangsan\",\"age\":\"18\"},{\"name\":\"lisi\",\"age\":\"28\"}]";

 

3)稍微复杂点的json object 字符串

 

      String jsonSpecialStr = "{\"school\":\"NanJingDaXue\",\"city\":\"najing\",\"peoples\":[{\"name\":\"zhangsan\",\"age\":\"18\"},{\"name\":\"zhangsan\",\"age\":\"18\"}]}";

 

 

 

解析json的方法很多,这里总结下使用Gson解析以上三种json字符串的方法:

1、首先新建一个maven工程,pom文件中引入gson的依赖项:

 

    <dependency>

    <groupId>com.google.code.gson</groupId>

    <artifactId>gson</artifactId>

    <version>2.2.2</version>

    </dependency>

 

2、根据前面提到的json字符串结构,可定义反序列化对象People类、Students:

    package com.zgy.json.info;

 

    public class People

    {

        //name

        private String name;

    

        //age

        private String age;

 

/**

 * @return the name

 */

public String getName()

{

return name;

}

 

/**

 * @param name the name to set

 */

public void setName(String name)

{

this.name = name;

}

 

/* (non-Javadoc)

 * @see java.lang.Object#toString()

 */

@Override

public String toString()

{

StringBuilder builder = new StringBuilder();

builder.append("People [name=");

builder.append(name);

builder.append(", age=");

builder.append(age);

builder.append("]");

return builder.toString();

}

    }

 

 

    package com.zgy.json.info;

 

    import java.util.Arrays;

    import com.google.gson.annotations.SerializedName;

 

public class Students

{

private String school;

@SerializedName("city")  //注解,当json字符串中的字段定义和所需的不同时,可用注解标注

private String city;

private People [] peoples;

 

/**

 * @return the school

 */

public String getSchool()

{

return school;

}

 

/**

 * @param school the school to set

 */

public void setSchool(String school)

{

this.school = school;

}

 

/* (non-Javadoc)

 * @see java.lang.Object#toString()

 */

@Override

public String toString()

{

StringBuilder builder = new StringBuilder();

builder.append("Students [school=");

builder.append(school);

builder.append(", city=");

builder.append(city);

builder.append(", peoples=");

builder.append(Arrays.toString(peoples));

builder.append("]");

return builder.toString();

}

}

 

3、简单的json object  字符串的解析

Code: 

    String jsonObjectStr = "{\"name\":\"zhangsan\",\"age\":\"18\"}";

    Gson gson = new Gson();

    People people = gson.fromJson(jsonObjectStr, People.class);

    System.out.println(people.toString());

解析结果:

People [name=zhangsan, age=18]

 

4、json array 字符串的解析

 

Code:    

    String jsonArrayStr = "[{\"name\":\"zhangsan\",\"age\":\"18\"},{\"name\":\"lisi\",\"age\":\"28\"}]";

    Gson gson = new Gson();

 

    People[] peoples = gson.fromJson(jsonArrayStr, People[].class);

 

    for (People x : peoples)

    {

        System.out.println(x.toString());

    }

解析结果:

People [name=zhangsan, age=18]

People [name=lisi, age=28]

 

5、第三种复杂json

 

 

Code:    

String jsonSpecialStr = "{\"school\":\"NanJingDaXue\",\"city\":\"nanjing\",\"peoples\":[{\"name\":\"zhangsan\",\"age\":\"18\"},

                              {\"name\":\"lisi\",\"age\":\"28\"}]}";

    Gson gson = new Gson();

 

    Students students = gson.fromJson(jsonSpecialStr, Students.class);

    System.out.println(students.toString());

解析结果:

Students [school=NanJingDaXue, city=nanjing, peoples=[People [name=zhangsan, age=18], People [name=lisi, age=28]]]

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值