使用改造将 json 解析为 POJO

Posted

技术标签:

【中文标题】使用改造将 json 解析为 POJO【英文标题】:parsing json to POJO using retrofit 【发布时间】:2016-06-20 05:56:21 【问题描述】:

我正在尝试,但不断出现错误。 它似乎得到了数据,据我从 logcat 中看到的,我正确读取并解析了 json。但它返回 succes=false 并且不返回 responsedata 对象。 错误类型和错误消息为 null。 我不知道出了什么问题,如果有任何解决方案或如何定位错误的建议,我将不胜感激。

json


  "competition_info": 
    "headline": "competition",
    "description": "description for competition.",
    "accept_button": "OK",
    "open_terms_button": "Open info"
  ,
  "terms": 
    "html": "a website in html"
  
    

MyPojo

public class AnnComResponses
    @SerializedName("competition_info")
    public CompetitionInfo competitionInfo;
    @SerializedName("terms")
    public Terms terms;

    public class Terms

        @SerializedName("html")
        public String html;

        public String getTerms() 
            return html;
        
    

    public class CompetitionInfo
        @SerializedName("headline")
        public String headline;
        @SerializedName("description")
        public String description;
        @SerializedName("accept_button")
        public String acceptButton;
        @SerializedName("open_terms_button")
        public String openTermsButton;

        public String getHeadline() 
            return headline;
        

        public String getDescription() 
            return description;
        

        public String getAcceptButton() 
            return acceptButton;
        

        public String getOpenTermsButton() 
            return openTermsButton;
        

    

【问题讨论】:

请点击此链接,它应该会有所帮助 - ***.com/a/33720542/5123494 嗨弗拉基米尔,我认为我的问题表达得不好:-(我 【参考方案1】:

首先,您的主类中有几个类。将它们分成单独的文件,不要将它们放在同一个类中。第二个在你的主类中,你需要为你的属性 CompetitionInfo 和 terms 添加 setter 和 getter。同样作为一种好的样式,将属性设为私有,而您的 getter 和 setter 保持公开。

【讨论】:

【参考方案2】:

尝试使用 GSON 转换器进行如下改造:

RestAdapter restAdapter = new RestAdapter.Builder()
                .setLogLevel(RestAdapter.LogLevel.FULL)
                .setConverter(new GsonConverter(new GsonBuilder()).create()))
                .setEndpoint("your api end point goes here")
                .build(); 
YourAPI api = restAdapter.create(YourAPI.class);

【讨论】:

以上是关于使用改造将 json 解析为 POJO的主要内容,如果未能解决你的问题,请参考以下文章

为改造创建 pojo 类和回调

Retrofit2 - JSON 数组解析

如何将改造 JSON 响应转换为列表?

如何使用改造[重复]将对象解析为json

如何通过改造将数组嵌套对象 Json 解析为 Kotlin?

这是在没有 get/set-ters 的情况下改造 POJO 的正确方法吗?