数组格式如下:
{
"reason":"success",
"result":[
{
"day":"1/1",
"date":"-45年1月1日",
"title":"罗马共和国开始使用儒略历",
"e_id":"1"
},
{
"day":"1/1",
"date":"404年1月1日",
"title":"东晋将领桓玄正式称帝,国号楚",
"e_id":"2"
},
{
"day":"1/1",
"date":"860年1月1日",
"title":"西法兰克国王厄德一世诞生",
"e_id":"3"
},
]
}
这是解析单个元素的代码,想知道该怎么以这种格式解析数组?
public static String parseContent(String transApiResponseText) {
String result = "";
JsonElement jsonElement= JsonParser.parseString(transApiResponseText);
JsonObject jsonObject=jsonElement.getAsJsonObject();
int errorCode=jsonObject.get("code").getAsInt();
JsonObject RequireResult=jsonObject.get("data").getAsJsonObject();
result=RequireResult.get("content").getAsString();
return result;
}
String jsonStr = "{\"reason\":\"success\",\"result\":[{\"day\":\"1/1\",\"date\":\"-45年1月1日\",\"title\":\"罗马共和国开始使用儒略历\",\"e_id\":\"1\"},{\"day\":\"1/1\",\"date\":\"404年1月1日\",\"title\":\"东晋将领桓玄正式称帝,国号楚\",\"e_id\":\"2\"},{\"day\":\"1/1\",\"date\":\"860年1月1日\",\"title\":\"西法兰克国王厄德一世诞生\",\"e_id\":\"3\"}]}";
Map<String, Object> map = JSON.parseObject(jsonStr, new TypeReference<Map<String, Object>>() {
});
JSONArray resultArray = (JSONArray) map.get("result");
resultArray.forEach(System.out::println);
// 获取数组元素的属性
((JSONObject) resultArray.get(0)).getString("title");
System.out.println(map);
题主你好,一般实际开发中,在格式确定的情况下,一般不建议转为JsonObject或者Map,后期很难维护。
可以参考我下面写的代码
//生成gson对象
Gson gson = new GsonBuilder().create();
//将字符串s转为指定的类,并通过类的字段来获取数据
final PojoWrapper pojoWrapper = gson.fromJson(s, PojoWrapper.class);
//打印结果
System.out.println(gson.toJson(pojoWrapper));
类定义参考下面,字段类型可以按照自己的需求修改。
public class PojoWrapper {
private String reason;
private List<MyPojo> result;
private class MyPojo {
private String day;
private String date;
private String title;
private String e_id;
public String getDay() {
return day;
}
public void setDay(String day) {
this.day = day;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getE_id() {
return e_id;
}
public void setE_id(String e_id) {
this.e_id = e_id;
}
}
public String getReason() {
return reason;
}
public void setReason(String reason) {
this.reason = reason;
}
public List<MyPojo> getResult() {
return result;
}
public void setResult(List<MyPojo> result) {
this.result = result;
}
}