{\"datetime\":\"2019/9/2 13:46:00\",\"measparam\":\"w01018\",\"value\":411.839996337891,\"unit\":\"mg/L\",\"type\":1,\"dataflag\":\"N\"},{\"datetime\":\"2019/9/2 13:46:00\",\"measparam\":\"w21011\",\"value\":3.07800006866455,\"unit\":\"mg/L\",\"type\":1,\"dataflag\":\"N\"}
有这样一个json串数组如何判断当measparam为w01018时候,value取值为411.839996;当measparam为w21011时候,value取值为3.07800006866455?
你可以先把json字符串转成json对象,然后就可以取对应的属性的值,具体的根据语言不同稍微有一点差别
用阿里的 Fastjson.jar 工具包处理 JSON 字符串,楼主给出的是数组的 JSON 字符串,需要加上[] ,代码如下:
String text = "[{\"datetime\":\"2019/9/2 13:46:00\",\"measparam\":\"w01018\",\"value\":411.839996337891,\"unit\":\"mg/L\",\"type\":1,\"dataflag\":\"N\"},{\"datetime\":\"2019/9/2 13:46:00\",\"measparam\":\"w21011\",\"value\":3.07800006866455,\"unit\":\"mg/L\",\"type\":1,\"dataflag\":\"N\"}]";
JSONArray array = JSONObject.parseArray(text);
for(int i=0;i<array.size();i++){
//TODO 处理属性
JSONObject json = array.getJSONObject(i);
System.out.print(json.get(""));
}
将json转成JSONObject对象,jsonObject.getString("measparam");用该对象获取值就好了
public static void main(String[] args) {
String value = "";
String text = "[{\"datetime\":\"2019/9/2 13:46:00\",\"measparam\":\"w01018\",\"value\":411.839996337891,\"unit\":\"mg/L\",\"type\":1,\"dataflag\":\"N\"},{\"datetime\":\"2019/9/2 13:46:00\",\"measparam\":\"w21011\",\"value\":3.07800006866455,\"unit\":\"mg/L\",\"type\":1,\"dataflag\":\"N\"}]";
List<JSONObject> jsonObjects = JSON.parseArray(text, JSONObject.class);
for (JSONObject jsonObject : jsonObjects) {
if ("w01018".equals(jsonObject.get("measparam"))) {
value = jsonObject.get("value").toString();
//todo
break;
} else if ("w21011".equals(jsonObject.get("measparam"))) {
value = jsonObject.get("value").toString();
//todo
break;
}
}
}
你可以将json转成一个实体类
Json字符串用api解析成对象,然后就可以反问对象里的属性,然后才可以判断