【问题标题】:Jackson wrapper deserialization best practices [closed]Jackson 包装器反序列化最佳实践 [关闭]
【发布时间】:2013-11-14 09:20:26
【问题描述】:

我有以下 JSON,我想使用 Jackson JSON 处理器库 (http://jackson.codehaus.org/) 解析它:

{
    "wrapper":{
        "general":{
            "value":10
        },
        "items":{
            "DOG":{
                "0":78,
                "1":125
                "name":"Lucky",
                "features":{
                    "color":"brown",
                    "sex":"male"
                }
            },
            "CAT":{
                "0":123,
                "1":94
                "name":"Fluffy",
                "features":{
                    "color":"black",
                    "sex":"female"
                }
            },
            "MOUSE":{
                "0":23,
                "1":33
                "name":"Jerry",
                "features":{
                    "color":"gray",
                    "sex":"male"
                }
            }
        }
    }
}

就最佳做法而言,您认为如何成为最佳方式?

【问题讨论】:

  • 杰克逊?那是什么
  • @MT8 这是一个 JSON 库。他应该阅读手册而不是在这里问。
  • 好的,我使用 GSON lib,但我认为使用 lib 会产生堆问题...直接解析它
  • @Kayaman 你能给我指出正确的链接吗?我该如何管理wapper?
  • 制作一个包装类?你真正的问题是什么?

标签: java android json jackson


【解决方案1】:

解析 JSON 的简单快速的形式是创建一个带有注释的 bean,然后调用 Jackson。

有些是这样的:

@JsonIgnoreProperties(ignoreUnknown = true)
public class YourClass {

@JsonProperty("wrapper")
public Wrapper wrapper;

@JsonIgnoreProperties(ignoreUnknown = true)
public static class Wrapper{
        @JsonProperty("Items")
        public ArrayList<Item> items = new ArrayList<Item>();
}


@JsonIgnoreProperties(ignoreUnknown = true)
public static class Item{
        @JsonProperty("name")
        public String name;
        ...
}

....

}

然后在你的 Activity/Thread/AsyncTask 中:

  public ObjectMapper mMapper;

  ...

  if (mMapper == null)
      mMapper = new ObjectMapper();
  YourClass yourClass = (YourClass) mMapper.readValue(stringJSON, YourClas.class);

重用 ObjectMapper 非常重要,因为实例化它非常昂贵

改进:如果你设置这个 JSON 可能会得到改进(bean 是基于它的)

{  
  "wrapper":{  
    "general":{
        "value":10
    },
    "items":[  
        "item":{      
            "name":"DOG",  
            "0":78,  
            "1":125
            "name":"Lucky",
            "features":{
                "color":"brown",
                "sex":"male"
            }
        },
        "item":{
            "name":"CAT",
            "0":123,
            "1":94
            "name":"Fluffy",
            "features":{
                "color":"black",
                "sex":"female"
            }
        }
    ]
}

【讨论】:

  • 遗憾的是我无法更改 JSON 结构,我只需要在其上调整我的代码
  • 不管怎样,用json把注释修改为foot :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-24
  • 2016-02-21
  • 2011-08-04
  • 2013-07-27
  • 2022-01-03
  • 2011-02-23
相关资源
最近更新 更多