
软件测试开发基础中,关于json的解析是比较常见的,作为软件测试人员,json的基础需要掌握。这篇文章介绍Gson解析json比较常用的有2种方式,如下。
Gson解析json比较常用的有2种方式:
1.通过JavaBean方式去映射
2.直接转换为JsonObject,解析JsonObject
通过JavaBean方式去映射
//response映射类:
public class response {
private String code;
private String msg;
private info info;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public info getInfo() {
return info;
}
public void setInfo(info info) {
this.info = info;
}
}
//info映射类:
public class info {
private String a;
private String b;
private String c;
public String getA() {
return a;
}
public void setA(String a) {
this.a = a;
}
public String getB() {
return b;
}
public void setB(String b) {
this.b = b;
}
public String getC() {
return c;
}
public void setC(String c) {
this.c = c;
}
}
具体的实现代码如下:
<span style="white-space:pre"> </span>@Test
public void test2(){
String json_String ="{\"code\":\"00000\",\"msg\":\"操作成功\",\"info\":{\"a\":\"网络爬取搜房\",\"b\":\"网络爬取安居客\"}}";
System.out.println("json:"+json_String);
Type type = new TypeToken<response>(){}.getType();
Gson gson = new Gson();
response reponse_data=gson.fromJson(json_String, type);
String code=reponse_data.getCode();
String msg=reponse_data.getMsg();
String aa=reponse_data.getInfo().getA();
String bb=reponse_data.getInfo().getB();
System.out.println("code:"+code);
System.out.println("msg:"+msg);
System.out.println("aa:"+aa);
System.out.println("bb:"+bb);
}
程序输出结果:
json:{“code”:“00000”,“msg”:“操作成功”,“info”:{“a”:“网络爬取搜房”,“b”:“网络爬取安居客”}}
code:00000
msg:操作成功
aa:网络爬取搜房
bb:网络爬取安居客
直接转换为JsonObject,解析JsonObject
@Test
public void test(){
String json_String ="{\"code\":\"00000\",\"msg\":\"操作成功\",\"info\":{\"1\":\"网络爬取搜房\",\"2\":\"网络爬取安居客\"}}";
System.out.println("json:"+json_String);
JsonParser parser = new JsonParser();
JsonElement je = parser.parse(json_String);
String code=je.getAsJsonObject().get("code").getAsString();
String msg=je.getAsJsonObject().get("msg").getAsString();
String data1=je.getAsJsonObject().get("info").getAsJsonObject().get("1").getAsString();
String data2=je.getAsJsonObject().get("info").getAsJsonObject().get("2").getAsString();
System.out.println("code:"+code);
System.out.println("msg:"+msg);
System.out.println("data1:"+data1);
System.out.println("data2:"+data2);
程序输出结果:
json:{“code”:“00000”,“msg”:“操作成功”,“info”:{“1”:“网络爬取搜房”,“2”:“网络爬取安居客”}}
code:00000
msg:操作成功
data1:网络爬取搜房
data2:网络爬取安居客
如果json数据中有数组,需要特殊的处理一下,例如:{“code”:“00000”,“msg”:“操作成功”,“data”:[{“id”:3,“parentId”:0,“regionName”:“苏州”},{“id”:121,“parentId”:0,“regionName”:“上海”}]}
<span style="white-space:pre"> </span>@Test
public void test3(){
String json_data="{\"code\":\"00000\",\"msg\":\"操作成功\",\"data\":[{\"id\":3,\"parentId\":0,\"regionName\":\"苏州\"},{\"id\":121,\"parentId\":0,\"regionName\":\"上海\"}]}";
System.out.println("json:"+json_data);
Gson gson = new Gson();
JsonParser parser = new JsonParser();
List<Map<String,String>> list = new ArrayList<Map<String,String>>();
JsonObject jsonObject = parser.parse(json_data).getAsJsonObject();
JsonArray jsonArray = jsonObject.getAsJsonArray("data");
Type type = new TypeToken<Map<String,String>>() {}.getType();
for (int i = 0; i < jsonArray.size(); i++) {
JsonElement el = jsonArray.get(i);
Map<String,String> tmp = gson.fromJson(el, type);
list.add(tmp);
System.out.println(tmp.get("regionName"));
}
String code =jsonObject.get("code").getAsString();
System.out.println("code:"+code);
String regionName_1=list.get(0).get("regionName");
String id_1=list.get(0).get("id");
System.out.println("regionName_1:"+regionName_1);
System.out.println("id_1:"+id_1);
// jsonObject.remove("data");
// jsonObject.add("data", parser.parse(gson.toJson(list)).getAsJsonArray());
// System.out.println(gson.toJson(jsonObject));
// System.out.println("code:"+code);
// System.out.println("No:"+No);
}
输出的结果:
苏州
上海
code:00000
regionName_1:苏州
id_1:3
喜欢软件测试的小伙伴们,如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!
好文推荐
转行面试,跳槽面试,软件测试人员都必须知道的这几种面试技巧!
面试官:工作三年,还来面初级测试?恐怕你的软件测试工程师的头衔要加双引号…
4个月自学软件测试面进阿里!如何从功能测试转成自动化…我经历了什么
6000元报了培训班,3个月后我成功“骗”进了腾讯大厂,月薪15000


本文介绍了软件测试中使用Gson库解析Json的两种常见方法:通过JavaBean映射和直接转换为JsonObject。通过JavaBean方式,将Json字符串映射到对应的Java对象,然后获取属性值;通过JsonObject,直接解析Json字符串获取键值。示例代码详细展示了这两种方法的实现,并提供了处理包含数组的Json数据的例子。
1866

被折叠的 条评论
为什么被折叠?



