-1

I am Calling a Api Which is returning me this Response

[
    {
        "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": {}
        }
    }
]

Now I have to Extract Message and Decision from response one by one How I can Do This. Not Down there could be Multiple Messages in an Object.

Emp1
  • 111
  • 7

3 Answers3

2

The type of value in message is not sure. Sometimes it is xxx,xxx,xxx, sometimes it is [xxx,xxx,xxx]. So you may need this.

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;
    }
}
simon5678
  • 249
  • 1
  • 5
1

try this :

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();
}
Sham Gir
  • 324
  • 1
  • 9
0

Assuming you have access to jquery and need message in an independent array to work with,

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

swapz83
  • 422
  • 4
  • 11