我从JSON获得了两种格式的字符串和数组响应,因此由于我不确定哪种格式,所以无法处理它
有什么方法可以使用Java处理字符串和数组类型的响应
请提前告知我
答案 0 :(得分:0)
我认为您可以在这种情况下使用try catch异常。 首先,尝试将响应视为String。如果发生错误,则捕获错误并将响应视为Array。
答案 1 :(得分:0)
只需检查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
进行测试。
P.S。在注释中,两个示例都是错误的。在第一个示例中,末尾有一个逗号,
,在第二个示例中,您没有关闭大括号}
。