android,gson无法将json字符串解析为java对象

android,gson无法将json字符串解析为java对象,android,json,gson,Android,Json,Gson,我得到了这个错误。 java.lang.IllegalStateException:应为BEGIN_对象,但在第1行第44列为字符串 我知道在这个问题上也有类似的问题,他们只是没有帮助我。 我的json字符串格式正确,因为我可以在任何json编辑器中查看它 我以前用过不同的json字符串,请告诉我这个有什么问题 这是我的代码: Gson gson = new Gson(); data = gson.fromJson(result, Data3Nir.class); 这是java数据对象 pub

我得到了这个错误。 java.lang.IllegalStateException:应为BEGIN_对象,但在第1行第44列为字符串

我知道在这个问题上也有类似的问题,他们只是没有帮助我。 我的json字符串格式正确,因为我可以在任何json编辑器中查看它

我以前用过不同的json字符串,请告诉我这个有什么问题

这是我的代码:

Gson gson = new Gson();
data = gson.fromJson(result, Data3Nir.class);
这是java数据对象

public class Data3Nir {

private List<LinksEntity> links;

public void setLinks(List<LinksEntity> links) {
    this.links = links;
}

public List<LinksEntity> getLinks() {
    return links;
}

public static class LinksEntity {


    private LinkEntity link;

    public void setLink(LinkEntity link) {
        this.link = link;
    }

    public LinkEntity getLink() {
        return link;
    }

    public static class LinkEntity {
        private String title;
        private String link_place_in_list;
        private String web_link;


        private WebLinkIconEntity web_link_icon;

        public void setTitle(String title) {
            this.title = title;
        }

        public void setLink_place_in_list(String link_place_in_list) {
            this.link_place_in_list = link_place_in_list;
        }

        public void setWeb_link(String web_link) {
            this.web_link = web_link;
        }

        public void setWeb_link_icon(WebLinkIconEntity web_link_icon) {
            this.web_link_icon = web_link_icon;
        }

        public String getTitle() {
            return title;
        }

        public String getLink_place_in_list() {
            return link_place_in_list;
        }

        public String getWeb_link() {
            return web_link;
        }

        public WebLinkIconEntity getWeb_link_icon() {
            return web_link_icon;
        }

        public static class WebLinkIconEntity {
            private String src;
            private String alt;

            public void setSrc(String src) {
                this.src = src;
            }

            public void setAlt(String alt) {
                this.alt = alt;
            }

            public String getSrc() {
                return src;
            }

            public String getAlt() {
                return alt;
            }
        }
    }
}

您的json字符串似乎正确,但我怀疑您解析数据的方式,因为除非您使用自定义反序列化程序,否则gson parse无法在complexe字段上工作,否则您可以尝试使用下面的代码

Gson gson = new Gson();
Type type = new TypeToken<ArrayList<LinksEntity>>(){}.getType()
data = gson.fromJson(result.get("links").getAsJsonArray(), type);
Gson-Gson=new-Gson();
Type Type=new-TypeToken(){}.getType()
data=gson.fromJson(result.get(“links”).getAsJsonArray(),type);

json结构看起来正常。 也许问题在于您使用的是希伯来语字符串:
“title”:“ראשי”,
也许你正在使用一个旧版本的Gson-jar? 无论如何,尝试将希伯来语字符串更改为英语字符串并重新检查。
它在我的机器上运行,希伯来语也一样。

谢谢,希伯来语是我的问题。它只适用于英语。您使用的是什么gson版本?
Gson gson = new Gson();
Type type = new TypeToken<ArrayList<LinksEntity>>(){}.getType()
data = gson.fromJson(result.get("links").getAsJsonArray(), type);