我正在访问一项服务,有时会得到这样的结果:
{ "param1": "value1", "param2": "value2" }
有时会得到这样的回报:
[{ "param1": "value1", "param2": "value2" },{ "param1": "value1", "param2": "value2" }]
我如何知道我得到的是哪一个?当我执行 getClass() 时,它们都评估为字符串,但如果我尝试这样做:
json = (JSONObject) new JSONParser().parse(result);
在第二种情况下我得到一个例外
org.json.simple.JSONArray cannot be cast to org.json.simple.JSONObject
如何避免这种情况?我只是想知道如何检查我要回来的内容。 (第一种情况有时会[]
所以我不能做索引,我想要一种比只检查第一个字符更干净的方法。
必须有某种方法来检查这一点?
简单的Java:
Object obj = new JSONParser().parse(result);
if (obj instanceof JSONObject) {
JSONObject jo = (JSONObject) obj;
} else {
JSONArray ja = (JSONArray) obj;
}
您还可以测试(所谓的)JSON 是否以[
or a {
如果您想避免解析错误类型的 JSON 的开销。但要小心前导空格。
无论如何,根据结果集大小返回 JSON 对象或 JSON 对象数组的 API ……设计得很糟糕。最好是always返回一个 JSON 数组;例如包含零个、一个或多个对象的数组。这避免了我们在这个问题中必须处理的客户端混乱。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)