使用 LoganSquare 从 JSON 反序列化嵌套字段

Posted

技术标签:

【中文标题】使用 LoganSquare 从 JSON 反序列化嵌套字段【英文标题】:Deserialize nested field from JSON using LoganSquare 【发布时间】:2017-12-07 06:16:03 【问题描述】:

我正在使用带有 Retrofit 的 LoganSquare 来使用来自 Web 服务的数据。

对于一个特定的 API,Web 服务返回一个相对复杂的 JSON 响应,而我唯一感兴趣的信息是嵌套了几层。例如,

"outer":  "middle":  "inner": ... 

由于我只对inner 值感兴趣,因此我创建了一个数据对象,例如:

@JsonObject
class MyData implements Serializable 
    @JsonField(name = "outer.middle.inner")
    public String inner;

我已经将 Web 服务的返回值映射到了这种数据类型。

但是,这种点语法 (outer.middle.inner) 会达到我的预期只是一厢情愿,因为该字段在成功调用该方法时并未映射。

有没有办法将 LoganSquare JSON 对象中的字段映射到嵌套值?

【问题讨论】:

【参考方案1】:

我认为您必须将每个 JsonObject 声明为内部类:

@JsonObject
public class MyData implements Serializable 
    @JsonObject
    public static class Outer 
        @JsonObject
        public static class Middle 
            @JsonField
            public String inner;
        
    
     

【讨论】:

以上是关于使用 LoganSquare 从 JSON 反序列化嵌套字段的主要内容,如果未能解决你的问题,请参考以下文章

从 JSON 反序列化 java 枚举

从 JSON 反序列化重复字典

从 JSON 反序列化多维数组

反序列化从 json api 继承的类

使用动态键反序列化 JSON

从 C# 程序中反序列化 JSON 时,我是不是需要使用 JavaScriptSerializer 以外的任何东西?