我从服务器返回了一些JSON数据。
有时数据是其他时间的数组,它返回一个空字符串(是的,我知道它应该返回一个空数组)。
所以如果类型是String的实例,我需要检查FIRST;如果是这样,我会忽略它并继续生活
否则我需要阅读这些值。
如何确定对象是否为String
?
我看过这个SO question和其他一些,但我认为它并不适合我的情况。
我觉得我很接近,但我的代码失败表示我无法将一个对象强制转换为字符串。
但是,如果我将它转换为字符串...那么它将始终是一个字符串的实例。无限循环。
这是我到目前为止所处的位置。
private void myMethod(JSONObject data){
if (data.has("Notes")){
Object json = new JSONTokener(data.getJSONObject("Notes")).nextValue();
if(data.getJSONObject("Notes") instanceof String) {
JSONArray array = data.getJSONObject("Notes").getJSONArray("Note");
//do all the array stuff
}
}
}
带阵列示例的JSON
{ "Data": {
"key": "A value",
"another key": "some value",
"Notes": {
"Note": ["1", "2", "3", "4"]
} } }
没有数组示例的JSON
{ "Data": {
"key": "A value",
"another key": "some value",
"Notes": ""
} }
答案 0 :(得分:1)
你有这个
Object json = new JSONTokener(data.getJSONObject("Notes")).nextValue();
但你在这里没有使用json
。您已经第二次提取getJSONObject("Notes")
。
if(data.getJSONObject("Notes") instanceof String) {
尝试
if(json instanceof String) {
如果这不起作用,我试试
JSONObject notesObj = data.optJSONObject("Notes");
if (noteObj == null) {
// It might be a string, but it was not an object
}
我不确定如果您只是对作为对象的值使用getString("Notes")
会发生什么。可能toString
它,但我最近还没有尝试过记住它。