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。那么,你一直都在做这种粗体的事情吗?你的回答让我想起了“如果谷歌是个男人”的视频,当时他在喊“那不是她想要的”。