Обработка ответа JSON, который является String или Array, используя ту же переменную в JAVA - PullRequest
0 голосов
/ 04 марта 2019

Я получаю ответ от JSON в двух форматах: String и Array, поэтому не могу его обработать, потому что я не уверен, какой формат будет

Есть ли способ обработки ответа типа строки и массива с помощьюjava

Пожалуйста, дайте мне знать заранее спасибо

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Просто проверьте тип данных части JSON message и, соответственно, используйте его.

Проверьте этот пример.

package test;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

public class jsonDeco {

    public static void main(String[] args) throws JSONException {
        // TODO Auto-generated method stub
        JSONObject a = new JSONObject("{ \"status_code\": 2002, \"sub_status_code\": 2002,"
                + " \"message\": \"Service Invoke Create Step2 Success\"} ");
        JSONObject b = new JSONObject("{ \"status_code\": 7000, \"sub_status_code\": 7001,"
                + " \"message\": [ \"Step No: Step 2: Line No: 92 Variable Name: lan-pool-ipv6-mask"
                + " Error Code: 7516 Error Detail: Lan Pool IPV6 network address is invalid Description: \" ]}");
        parseAORB(b);
    }

    public static void parseAORB(JSONObject input) throws JSONException
    {
        String code = input.getString("status_code");
        System.out.println(code);
        System.out.println(nameOf(input.get("message")));
        if(nameOf(input.get("message")).equals("String"))
        {
            System.out.println("inside string");
            String message = input.getString("message");
            System.out.println("Message is : "+message);
        }
        else if (nameOf(input.get("message")).equals("JSONArray"))
        {
            JSONArray message = input.getJSONArray("message");
            System.out.println("inside jsonarray");
            System.out.println("Message is : "+message.getString(0).toString());
        }   
    }

    private static String nameOf(Object o) {
        return o.getClass().getSimpleName();
    }
}

Вы можете передать переменную a или b вtest.

PS В комментарии оба примера неверны.В первом случае в конце есть еще одна запятая ,, а во втором примере вы не закрыли фигурную скобку }.

0 голосов
/ 04 марта 2019

Я думаю, что в этом случае вы можете использовать исключение try catch.Сначала попробуйте обработать ответ как String.если возникает ошибка, просто перехватите ошибку и обработайте ответ как массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...