[英]how to put json string into list in java
我在字符串中得到一个JSON array
[ { "id":"ca.Primary_Diagnosis_Dt",
"field":"ca.Primary_Diagnosis_Dt",
"type":"date",
"input":"text",
"operator":"not_equal",
"value":"2016/06/07"
},
{ "id":"ca.Clinical_Stage",
"field":"ca.Clinical_Stage",
"type":"integer",
"input":"select",
"operator":"equal",
"value":"I"
}
]
我只想在LIST
保存id,运算符和值的值,请帮忙
在线: 工作代码
首先创建一个类来存储您的值:
class Data{
String id;
String operator;
String value;
}
然后遍历json:
JSONArray jsonArr = new JSONArray("[JSON Stirng]");
List<Data> dataList = new ArrayList<>();
for (int i = 0; i < jsonArr.length(); i++) {
JSONObject jsonObj = jsonArr.getJSONObject(i);
Data data = new Data();
data.id = jsonObj.getString("id");
data.operator = jsonObj.getString("operator");
data.value = jsonObj.getString("value");
dataList.add(data);
}
现在dataList
有您的数据!
PS:在Data
类中使用getter / setter
JAR: http : //www.java2s.com/Code/Jar/j/Downloadjavajsonjar.htm
您可以使用诸如org.glassfish.javax.json
类的JSon库来org.glassfish.javax.json
在Maven中使用
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.json</artifactId>
<version>1.0.4</version>
</dependency>
然后将字符串读取到JsonArray:
JsonArray ja = Json.createReader(new StringReader(input)).readArray();
然后迭代列表,将对象映射到只有您需要的值的新对象:
List<JsonObject> list = ja.stream()
.map(o -> (JsonObject) o)
.map(jo -> Json.createObjectBuilder()
.add("id", jo.getJsonString("id"))
.add("operator", jo.getJsonString("operator"))
.add("value", jo.getJsonString("value")).build())
.collect(Collectors.toList());
如果您不能使用JsonObject
作为输出,您可以使用值对象 - 就像Himanshu Tyagi建议的那样 - 并将值映射到该对象。
在您的情况下,我认为,应该将JSON解析为List<Map<String,String>>
。 这可以使用Jackson
完成。 以下是将JSON字符串转换为List<Map<String,String>>
:
public static List<Map<String, String>> toList(String json) throws IOException {
List<Map<String, String>> listObj;
ObjectMapper MAPPER = new ObjectMapper();
listObj = MAPPER.readValue(json, new TypeReference<ArrayList<HashMap<String, String>>>() {
});
return listObj;
}
如果您已为其创建了POJO类,则可以使用:
public static List<PojoClass> toList(String json) throws IOException {
List<PojoClass> listObj;
ObjectMapper MAPPER = new ObjectMapper();
listObj = MAPPER.readValue(json, new TypeReference<ArrayList<PojoClass>>() {
});
return listObj;
}
Jackson
Maven依赖:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.6.3</version>
</dependency>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.