[英]How to handle unknown-type json response in java
我是JSON的新手。
我需要从服务器接收响应(以字符串形式)。 该响应可以是类似
{"a" : "value", "b" : "value2", ...}
如果请求成功,或者单个字符串,例如
"ERROR"
错误。
使用org.json.JSONObject
,如何检查返回了哪一个?
编辑
我认为这可能有效,但是我不确定这是否是正确的方法
if(JSONString.equals("\"ERROR\"") {
//handle error
} else {
//parse actual object
}
其中JSONString
是包含服务器响应的字符串
这可行吗?
字符串“ ERROR”是无效的JSON。 查看JSONWriter API,您将看到无法生成类似“ ERROR”的JSON字符串。
如果您始终要将服务器响应视为json,则需要使其返回类似{“ error”:true}或{error:false}的内容。 然后,您的程序将能够反序列化检查错误字段。
如果您无法控制服务器响应,则需要在反序列化之前测试String.equals(“ ERROR”)。
由于您无法使第三方服务输出有效的json,因此在进行json解析之前,只需进行字符串比较以查看响应是否为“错误”。
我认为带引号的字符串是有效的json值。 json.org上的语法未将对象或数组定义为特殊的toveve形式,rfc 4627将json-text定义为对象或数组,但是json值也可以是数字,字符串,布尔值或null。
根据我对org.json javadoc的阅读,以下内容应该起作用:
Object value = new JSONTokener(inputString).nextValue();
if (value instanceof String && ((String)value).equals("ERROR")) {
// handle error
} else if (value instanceof JSONObject) {
// handle response data
}
使用令牌生成器,您不会受到响应中最终其他空格的影响。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.