为了账号安全,请及时绑定邮箱和手机立即绑定

如何从 json 数组中提取值

如何从 json 数组中提取值

翻阅古今 2023-10-13 10:27:54
我正在调用一个 Api,它返回给我这个响应[    {        "message": {            "type": "String",            "value": "Msg1,Msg2,Msg3,Msg4",            "valueInfo": {}        },        "Decision": {            "type": "Boolean",            "value": false,            "valueInfo": {}        }    },    {        "message": {            "type": "String",            "value": "[Msg2, Msg3,Msg5]",            "valueInfo": {}        },        "Decision": {            "type": "Boolean",            "value": false,            "valueInfo": {}        }    }]现在我必须从响应中一一提取消息和决策我该如何做到这一点。不向下,一个对象中可能有多个消息。
查看完整描述

3 回答

?
LEATH

TA贡献1936条经验 获得超6个赞

尝试这个 :


String res = "[\n" +

        "    {\n" +

        "        \"message\": {\n" +

        "            \"type\": \"String\",\n" +

        "            \"value\": \"Msg1,Msg2,Msg3,Msg4\",\n" +

        "            \"valueInfo\": {}\n" +

        "        },\n" +

        "        \"Decision\": {\n" +

        "            \"type\": \"Boolean\",\n" +

        "            \"value\": false,\n" +

        "            \"valueInfo\": {}\n" +

        "        }\n" +

        "    },\n" +

        "    {\n" +

        "        \"message\": {\n" +

        "            \"type\": \"String\",\n" +

        "            \"value\": \"[Msg2, Msg3,Msg5]\",\n" +

        "            \"valueInfo\": {}\n" +

        "        },\n" +

        "        \"Decision\": {\n" +

        "            \"type\": \"Boolean\",\n" +

        "            \"value\": false,\n" +

        "            \"valueInfo\": {}\n" +

        "        }\n" +

        "    }\n" +

        "]";


try {

    JSONArray jsonArray = new JSONArray(res);


    JSONObject[] messages = new JSONObject[jsonArray.length()];

    JSONObject[] Decision = new JSONObject[jsonArray.length()];



    for(int i =0; i<jsonArray.length(); i++){

        messages[i] = ((JSONObject) (jsonArray.get(i))).getJSONObject("message");

        Decision[i] = ((JSONObject) (jsonArray.get(i))).getJSONObject("Decision");



    }

} catch (JSONException e) {

    e.printStackTrace();

}


查看完整回答
反对 回复 2023-10-13
?
守候你守候我

TA贡献1802条经验 获得超10个赞

假设您可以访问 jquery 并需要使用独立数组中的消息,

$(a).map(function (i, item) {return {item.message.value}).get();


查看完整回答
反对 回复 2023-10-13
?
长风秋雁

TA贡献1757条经验 获得超7个赞

valuein的类型message不确定。有时是xxx,xxx,xxx,有时是[xxx,xxx,xxx]。所以你可能需要这个。


public static void main(String[] args) {

    String json = "[\n" +

            "    {\n" +

            "        \"message\": {\n" +

            "            \"type\": \"String\",\n" +

            "            \"value\": \"Msg1,Msg2,Msg3,Msg4\",\n" +

            "            \"valueInfo\": {}\n" +

            "        },\n" +

            "        \"Decision\": {\n" +

            "            \"type\": \"Boolean\",\n" +

            "            \"value\": false,\n" +

            "            \"valueInfo\": {}\n" +

            "        }\n" +

            "    },\n" +

            "    {\n" +

            "        \"message\": {\n" +

            "            \"type\": \"String\",\n" +

            "            \"value\": \"[Msg2, Msg3,Msg5]\",\n" +

            "            \"valueInfo\": {}\n" +

            "        },\n" +

            "        \"Decision\": {\n" +

            "            \"type\": \"Boolean\",\n" +

            "            \"value\": false,\n" +

            "            \"valueInfo\": {}\n" +

            "        }\n" +

            "    }\n" +

            "]";



    List<MessageDecision> list = new Gson().fromJson(json,

            new TypeToken<List<MessageDecision>>(){}.getType());


    for (MessageDecision data: list){

        System.out.println(data.message.getValueList());

    }


}


class MessageDecision {

    public Message message;

    public Decision Decision;


    class Message {

        String type;

        String value;


        //

        List<String> valueList;



        public List<String> getValueList() {

            if (type.equals("String")) {

                if (value!=null) {

                    if (value.startsWith("[")) {


                        valueList = new Gson().fromJson(value, new TypeToken<List<String>>() {

                        }.getType());

                    } else {

                        String tempValues[] = value.split(",");

                        valueList = Arrays.asList(tempValues);

                    }

                }

                return valueList;

            }

            return null;

        }

    }


    class Decision {

        String type;

        Object value;

    }

}


查看完整回答
反对 回复 2023-10-13
  • 3 回答
  • 0 关注
  • 100 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信