当前位置: 代码迷 >> java >> 使用JAVA中的相同变量处理JSON响应(字符串或数组)
  详细解决方案

使用JAVA中的相同变量处理JSON响应(字符串或数组)

热度:93   发布时间:2023-07-26 14:00:29.0

我从JSON得到了两种格式的响应,分别是String和Array,因此无法处理它,因为我不确定哪种格式

有什么办法可以使用Java处理字符串和数组类型的响应

请提前通知我

我认为您可以在这种情况下使用try catch异常。 首先,尝试将响应视为String。 如果发生错误,则捕获错误并将响应视为Array。

只需检查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();
    }
}

您可以传递变量ab进行测试。

PS在评论中,两个例子都是错误的。 在第一个示例中,末尾有一个逗号,在第二个示例中,您没有关闭大括号}

  相关解决方案