我正在解析动态JSON,因此使用POJO(模型类)进行反编译会更加复杂
有什么方便的方法可以为我提供建议。
这是问题
public class Post {
@SerializedName("Resource")
@Expose
private Resource onlineResource;
public Resource getResource() {
return onlineResource;
}
public void setResource(Resource resource) {
this.onlineResource = resource;
}
}
public class Resource {
@SerializedName(value = "_xmlns:xlink",alternate = "xmlns:xlink")
@Expose
private Object xmlnsXlink;
@SerializedName(value = "_xlink:href",alternate = "xlink:href")
@Expose
private Object xlinkHref;
public Object getXmlnsXlink() {
return xmlnsXlink;
}
public void setXmlnsXlink(Object xmlnsXlink) {
this.xmlnsXlink = xmlnsXlink;
}
public Object getXlinkHref() {
return xlinkHref;
}
public void setXlinkHref(Object xlinkHref) {
this.xlinkHref = xlinkHref;
}
}
对于资源类,有时会获取JSON
like:
{
"Resource": "abcdefgh",
}
或者 就像:
{
"Resource" :
{
"_xmlns:xlink":"xyz",
"_xlink:href":"abc"
},
}
那我怎么解析这种类型的Random(Dynamic)Json?
答案 0 :(得分:0)
您只需将变量数据类型从Object更改为String:
private Object xmlnsXlink; TO private String xmlnsXlink;
和
private Object xlinkHref; TO private String xlinkHref;
答案 1 :(得分:0)
如果您正在使用JSON解析库(例如Gson),则不可能。您必须按照此处的建议手动解析JSON:Parsing dynamic JSON in Android
答案 2 :(得分:0)
首先使用此类作为您的资源类
public class Resource {
@SerializedName("_xmlns:xlink")
@Expose
private String xmlnsXlink;
@SerializedName("_xlink:href")
@Expose
private String xlinkHref;
public String getXmlnsXlink() {
return xmlnsXlink;
}
public void setXmlnsXlink(String xmlnsXlink) {
this.xmlnsXlink = xmlnsXlink;
}
public String getXlinkHref() {
return xlinkHref;
}
public void setXlinkHref(String xlinkHref) {
this.xlinkHref = xlinkHref;
}
}
对于某些位置的json变量,您需要使用以下命令手动解析json类型为变量(字符串/对象)的json:
json instanceof JSONObject
然后您可以在模型类中传递它的值