首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何判断return是JSONObject还是JSONArray with JSON-simple (Java)?

如何判断return是JSONObject还是JSONArray with JSON-simple (Java)?
EN

Stack Overflow用户
提问于 2013-05-07 10:43:08
回答 2查看 12.8K关注 0票数 11

我正在访问一个服务,有时会得到如下内容:

代码语言:javascript
复制
{ "param1": "value1", "param2": "value2" }

有时会得到这样的结果:

代码语言:javascript
复制
[{ "param1": "value1", "param2": "value2" },{ "param1": "value1", "param2": "value2" }]

我怎么知道我得到的是哪一个?当我执行getClass()时,它们的计算结果都是一个字符串,但如果我尝试这样做:

代码语言:javascript
复制
json = (JSONObject) new JSONParser().parse(result); 

在第二种情况下,我得到了一个异常

代码语言:javascript
复制
org.json.simple.JSONArray cannot be cast to org.json.simple.JSONObject

如何避免这种情况?我只想知道如何检查我要返回的是哪一个。(第一种情况有时会有[],所以我不能做索引,我想要一种比只检查第一个字符更干净的方式。

一定有某种方法来检查这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-07 11:22:12

简单的Java:

代码语言:javascript
复制
Object obj = new JSONParser().parse(result); 
if (obj instanceof JSONObject) {
    JSONObject jo = (JSONObject) obj;
} else {
    JSONArray ja = (JSONArray) obj;
}

如果您想避免解析错误类型的JSON的开销,还可以测试(所谓的) JSON是以[还是以{开头。但要注意前导空格。

票数 22
EN

Stack Overflow用户

发布于 2019-01-09 16:42:41

虽然它与上面的类似,但它们不是JSONParser的默认构造函数。出现的错误是:构造函数JSONParser()未定义

改用这个

代码语言:javascript
复制
JsonElement jsonElement = new JsonParser().parse(jsonString);
if (jsonElement.isJsonArray()) {
    //Your Code
} else {
    //Your Code
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16410421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档