java gson 解析json字符串_Java解析json字符串的几种方法

本文介绍了如何在Java中使用Gson库解析JSON字符串,包括解析对象、数组以及内嵌JSON到JavaBean的方法,并提供了相关示例代码。
摘要由CSDN通过智能技术生成

1. 官方提供的JSONArray与JSONObject

public void parseJsonString(jsonData){

JSONArray jsonArray = new JSONArray(jsonData);

for (int i=0; i < jsonArray.length(); i++) {

JSONObject jsonObject = jsonArray.getJSONObject(i);

int id = jsonObject.getInt("bunkId");

String link = jsonObect.getString("bunkNoteLink");

System.out.println(id+link);

}

}

引入jar包

4.0.0

org.json

json

RELEASE

compile

当json字符串根节点是”{}”即表示当前json是对象,直接使用JsonObject进行解析;当json字符串根节点是”[]”即表示当前json是数组对象,需要使用JSONArray进行解析。如果对象属性是int类型则用getInt方法,是String类型则getString方法。

以下是根节点”{}”与”[]”的示例:

[{

"bunkId": 140,

"residentsId": 132,

"bunkStatus": 1,

"rbI": 0,

"rbX": 0,

"bunkCoordinate": 1,

"bunkValue": null,

"bunkNote": null,

"bunkNoteLink": null

},

{

"bunkId": 141,

"residentsId": 475,

"bunkStatus": 1,

"rbI": 0,

"rbX": 0,

"bunkCoordinate": 1,

"bunkValue": null,

"bunkNote": null,

"bunkNoteLink": null

}]

{

"bunkId": 141,

"residentsId": 475,

"bunkStatus": 1,

"rbI": 0,

"rbX": 0,

"bunkCoordinate": 1,

"bunkValue": null,

"bunkNote": null,

"bunkNoteLink": null

}

2.使用GSON

引入maven依赖jar包,可自行搜索GSON官方文档

com.google.code.gson

gson

2.8.6

Gson解析示例:

解析对象示例:

Gson gson = new Gson();

MyType target = new MyType();//这是要解析的类型,可根据自己实际需求进行创建

String json = gson.toJson(target); // toJson方法将对象解析为json字符串,参数还可以是其它类型【比如字符串类型】

MyType target2 = gson.fromJson(json, MyType.class); //fromJson方法将json字符串解析为相应对象【参数1为要解析的json字符串,参数2为要解析为相应的类型】

以下是封装为公共方法示例:

public static T parseJsonWithGson(String jsonData, Class type) {

Gson gson = new Gson();

T result = gson.fromJson(jsonData, type);

return result;

}

解析数组集合示例:

Type listType = new TypeToken>() {}.getType();//拿到要解析成为的类型,List可以根据实际需求更改【泛型List】

List target = new LinkedList();

target.add("blah");//target可能理解为要解析的数据对象

Gson gson = new Gson();

String json = gson.toJson(target, listType);//将集合数据解析为字符串

List target2 = gson.fromJson(json, listType);//将json字符串解析为集合对象

以下是封装为公共方法示例:

public static List parseJsonArrayWithGson(String jsonData,Class type) {

Gson gson = new Gson();

List result = gson.fromJson(jsonData, new TypeToken>() { }.getType());

return result;

}

public static String parseJsonArrayWithGson(List list) {

Gson gson = new Gson();

Type listType = new TypeToken>() {}.getType();

String json = gson.toJson(list, listType);

return json;

}

将内嵌json转换成javabean(包含内部类):

json串:

{

"picture": "image/home01.jpg"

,

"list": [

{

"id": 1525490,

"name": "aaa"

},

{

"id": 1525490,

"name": "bbb"

}

]

}

复制代码解析如上的json需要如下的javabean:

public class Infos{

String picture;

Listlist;

class Name{

String id;

String name

}

//所有的setter方法此处省略,其实如果合用的是AS开发可以直接使用工具Gsonfomat一键生成javabean很方便

}

复制代码json节点解析+gson

对于如下json:

json:

{'flag':true,'data':{'name':'张三','age':18,'sex':true}}

复制代码

gson配置json节点解析的步骤 :

获得 解析者

JsonParser parser = new JsonParser();

获得 根节点元素

JsonElement element = parser.parse(json);

根据 文档判断根节点属于 什么类型的 Gson节点对象

// 假如文档 显示 根节点 为对象类型 对象类型即 {}表示。[]表示为数组类型。

// 获得 根节点 的实际 节点类型

JsonObject root = element.getAsJsonObject();

取得 节点 下 的某个节点的 value

// 获得 flag 节点的值, flag 节点为基本数据节点

JsonPrimitive flagJson = root.getAsJsonPrimitive("flag");

// 基本节点取值

boolean flag = flagJson.getAsBoolean();

// 获得 data 节点的值,data 节点为Object数据节点

JsonObject dataJson = root.getAsJsonObject("data");

// 将节点上的数据转换为对象

Student stu = new Gson().fromJson(dataJson,Student.class);

作者:小二阳

链接:https://juejin.im/post/6844903528176025614

来源:掘金

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

作者:小二阳

链接:https://juejin.im/post/6844903528176025614

来源:掘金

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值