JSON串数组如何判断值分情况取值?

{\"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解析成对象,然后就可以反问对象里的属性,然后才可以判断