【问题标题】:How to use Flexjson JSONDeserializer?如何使用 Flexjson JSONDeserializer?
【发布时间】:2011-10-29 07:30:03
【问题描述】:

我有一个字符串:

 [{"product_id":"2","name":'stack"'},{"product_id":"2","name":"overflow"}]"

如何使用 Flexjson 的 JSONDeserializer 从上面的字符串中获取所有的product_ids?

我有一个名为productinformation 的类,其中包含product_idname 等字段。

【问题讨论】:

    标签: java json deserialization flexjson


    【解决方案1】:

    您可以使用 JSONDeserializer.use() 方法告诉它如何反序列化数组和数组中的每个对象,在本例中为类 ProductInformation 。 product_id 属性与 flexjson 期望的标准命名不匹配,因此您在对象上的属性需要在其中包含下划线。

    String products= "[{\"product_id\": \"123\",\"name\":\"stack\"},{\"product_id\": \"456\",\"name\":\"overflow\"}]";
    List<ProductInformation> productInfoList = new JSONDeserializer<List<ProductInformation> >()
        .use(null, ArrayList.class)
        .use("values",ProductInformation.class)
        .deserialize(products);
    
    for(ProductInformation productInformation : productInfoList){
        System.out.println(productInformation.getProduct_id();
    }
    

    Deserialization section of the docs 中的“没有训练轮的反序列化”部分详细介绍了 JSON 字符串中是否不包含类型信息时需要考虑的其他情况。

    【讨论】:

    • 请原谅我的无知,但这是什么意思---使用(“values”,ProductInformation.class)..什么是“values”......
    • "values" 是 flexjson 用来引用集合成员的特定名称,在本例中为列表。这基本上是说“此列表的每个成员都应反序列化为 ProductInformation 对象。
    • 几分钟前,我要求将列表 再次序列化到上面的字符串中。你能告诉我这个方向的一些想法吗......
    • @rob:嘿,我在这里发了一个问题stackoverflow.com/questions/7122368/… ...如果你知道答案,请在那里评论...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-16
    • 2011-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多