我在
字符串中获得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
请帮助
答案 0 :(得分:1)
答案 1 :(得分:1)
在线: Working code
首先创建一个用于存储值的类:
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
有您的数据!
P.S。 :在Data
类
JAR:http://www.java2s.com/Code/Jar/j/Downloadjavajsonjar.htm
答案 2 :(得分:0)
您可以使用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建议的那样 - 并将值映射到该对象。
答案 3 :(得分:0)
在您的情况下,我认为,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>