首页 > 解决方案 > 动态 JSON 解析错误:expected-begin-object-but-was-string-at-line-1-column-1,如何解决

问题描述

我正在解析动态 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

喜欢 :

   {
    "Resource": "abcdefgh",
   }

或者喜欢:

{ 
  "Resource" :
              {
              "_xmlns:xlink":"xyz",
              "_xlink:href":"abc"
              },
}

那么我该如何解析这种类型的随机(动态)Json?

标签: androidjsonparsinggson

解决方案


首先使用这个类作为你的资源类

    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

然后你可以在模型类中传递它的值


推荐阅读