Java-从JSONObject检索变量类型的值

Java-从JSONObject检索变量类型的值,java,json,jsonobject,Java,Json,Jsonobject,我有一些类似的JSON: {"result":[{"job":{"type":"Employee","title":"","occupation":"Underwater Basket Weaver"}}]} 我得到的职业价值如下: import org.json.JSONArray; import org.json.JSONObject; String occupation = null; JSONArray resultArray = obj.getJSONArray("result"

我有一些类似的
JSON

{"result":[{"job":{"type":"Employee","title":"","occupation":"Underwater Basket Weaver"}}]}
我得到的职业价值如下:

import org.json.JSONArray;
import org.json.JSONObject;

String occupation = null;

JSONArray resultArray = obj.getJSONArray("result");
JSONObject firstResult = resultArray.getJSONObject(0);
occupation = firstResult.getJSONObject("job").getString("occupation");
但是,由于某些原因,占用值并不总是
字符串。我猜它可能是
int
,也可能是
null
。我最后遇到了这样一个例外:

org.json.JSONException:JSONObject[“职业”]不是字符串。 位于org.json.JSONObject.getString(JSONObject.java:658)


当处理采用可变数据类型的JSONObject时,您应该怎么做?

这是您的初始Json:

{"result":[{"job":{"type":"Employee","title":"","occupation":"Underwater Basket Weaver"}}]}
执行此操作时:

JSONArray resultArray = obj.getJSONArray("result");
你会得到:

[{"job":{"type":"Employee","title":"","occupation":"Underwater Basket Weaver"}}]
{"job":{"type":"Employee","title":"","occupation":"Underwater Basket Weaver"}}
然后:

JSONObject firstResult=resultArray.getJSONObject(0)

你会得到:

[{"job":{"type":"Employee","title":"","occupation":"Underwater Basket Weaver"}}]
{"job":{"type":"Employee","title":"","occupation":"Underwater Basket Weaver"}}
下一步:

制作:

{"type":"Employee","title":"","occupation":"Underwater Basket Weaver"}
最后,你想得到职业值使用:获得(“职业”)你可以这样做

String occupation = String.valueOf(firstResult.getJSONObject("job").get("occupation"));

如果字段
occulation
始终有一个值(不是数组或另一个JSON对象)。

应用该值以字符串格式接收所有数据类型

occupation = firstResult.getJSONObject("job").get("occupation").toString();

当你提到:

但是,由于某些原因,占领值并不总是字符串。 我猜它可能是int,也可能是null。我最终得到了 这样的例外情况:

回答: 当JSON列数据类型不是整数时,字符串。。。它需要定义为对象或类

Object o = new Object();
然后,您可以使用if-else条件检查包装类(您的类型)可以是什么,然后相应地执行以下操作。 请检查下面的图片

图像来源:

您可能需要测试
getString(“职业”)
是否对
isNull(String)
有效。根据,
getString(…)
如果找不到一个,就会抛出异常。如果
firstResult,这将有NullPointerException。getJSONObject(“作业”)。get(“职业”)
返回null。那么,你一直都在做这种粗体的事情吗?你的回答让我想起了“如果谷歌是个男人”的视频,当时他在喊“那不是她想要的”。