java - 检查java中的JSON对象

标签 java android json retrofit2 jsonschema2pojo

我正在使用 Retrofit 2 获取 JSON,如果键有值,则它携带对象,否则为空数组。例如:

If the key i.e address has values it returns object

{
    "student": {
        "name": "Some name",
        "address": {
            "house": "5",
            "road": "3"
        }
    }
}

If the key i.e address does not have any value it returns empty array

{
    "student": {
        "name": "Some name",
        "address": []
    }
}

在我的 POJO 类中,我将 Address 类类型设置为对象,以便 Retrofit 可以解析 JSON。

public class Student {

@SerializedName("name")
@Expose
private String name;
@SerializedName("address")
@Expose
private Object address;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public Object getAddress() {
return address;
}

public void setAddress(Object address) {
this.address = address;
}

}

现在如何检查地址类型是对象还是数组?

我尝试过 isArray(),但没有找到结果。

if(obj.getclass().isArray())

提前致谢。

最佳答案

可以通过instanceof检查对象是JosnObject还是JsonArray

if (address instanceof JSONObject) {
JSONObject jsonObject = (JSONObject) address;
}
else  if (address instanceof JSONArray) {
JSONArray jsonArray = (JSONArray) address;
}

关于java - 检查java中的JSON对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42896781/

相关文章:

android - 从json中插入数据查询时出现sqlite异常?

java - 从 Java 发送 JSON 对象并在 PHP 中解码 JSON 对象

java - XStream:如何在编码的 XML 中隐藏 2 个不必要的父节点?

java - 为复杂对象生成 JSON 消息

android - 在android中找到最短路径/距离的任何算法?

android - 为 Google Map v2 fragment 创建 OnDragListener

java - 奇怪的 android.content.res.Resources$NotFoundException : Unable to find resource ID #0x7f06008d

php - 在php中将表记录保存在关联数组中

java - 如何在 Java 中表示大数字 ID?

java - 如何使变量在Java中随处可用而无需参数