【问题标题】:Android Moshi JsonAdapter for array's of objects用于对象数组的 Android Moshi JsonAdapter
【发布时间】:2018-12-18 23:49:10
【问题描述】:

我有一组 Servlet 可以传回对象数组,例如

 text=[{"sPK":1,"sName":"foobar","cFlag":0},
       {"sPK":5,"sName":"barfoo","cFlag":1}]

在一个 java 应用程序中,我使用 org.fasterXML.Jackson 来读取 json 并读取我使用的这种性质的数组

ObjectMapper m = new ObjectMappar();
SClass[] ss = m.readValue(response.getResponse(), SClass[].class);

如果我使用 Moshi 尝试这样的事情

JsonAdapter sJsonAdapter = moshi.adapter(sClass[].class);

应用程序出现故障,有没有办法使用 Moshi 来完成?

【问题讨论】:

    标签: android moshi


    【解决方案1】:

    如果你想使用Moshi 创建一个名为ServletsResponse 的类并添加它

    public class ServletsResponse{
    
    @Json(name = "sPK")
    private Integer sPK;
    @Json(name = "sName")
    private String sName;
    @Json(name = "cFlag")
    private Integer cFlag;
    
    public Integer getSPK() {
    return sPK;
    }
    
    public void setSPK(Integer sPK) {
    this.sPK = sPK;
    }
    
    public String getSName() {
    return sName;
    }
    
    public void setSName(String sName) {
    this.sName = sName;
    }
    
    public Integer getCFlag() {
    return cFlag;
    }
    
    public void setCFlag(Integer cFlag) {
    this.cFlag = cFlag;
    }
    
    }
    

    然后你就可以解析它了:

    Moshi moshi = new Moshi.Builder().build();
    JsonAdapter<ServletsResponse> jsonAdapter = moshi.adapter(ServletsResponse.class);
    
    ServletsResponse servletResponse = jsonAdapter.fromJson(json);
    System.out.println(servletResponse );
    

    【讨论】:

    • 这意味着我必须为 android 创建一个不同/相似的类才能工作?是否所有成员值都必须是类变量而不仅仅是普通的 int?
    • 它们可以是 int 原语。
    • @Nefarious 对你有用吗?如果它确实将其标记为正确答案并投票赞成:D
    猜你喜欢
    • 1970-01-01
    • 2020-03-07
    • 2020-04-19
    • 2022-01-14
    • 2022-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多