【问题标题】:Deserializing JSON list into list of objects with Flexjson使用 Flexjson 将 JSON 列表反序列化为对象列表
【发布时间】:2012-08-13 19:28:03
【问题描述】:

我正在尝试反序列化以下 json:

{ "books": [ {"id":"1","name":"book 1"}, {"id":"2","name":"book 2"} ] }

进入列表。它以前使用过这个 json:

[ {"id":"1","name":"book 1"}, {"id":"2","name":"book 2"} ] }

使用此代码:

List<Book> items = new JSONDeserializer<ArrayList<Book>>()
.use("values", Book.class).deserialize(json, ArrayList.class);

但是现在看了多个例子我很茫然,是否可以直接反序列化成列表?

【问题讨论】:

    标签: java json serialization flexjson


    【解决方案1】:

    从@vikke 中获取样本,我成功应用了 long 列表的反序列化。

    List<Long> idsLong = new JSONDeserializer<List<Long>>().use("values", Long.class).deserialize("[123,456,789]");
    

    【讨论】:

      【解决方案2】:

      好吧,我想我找到了一个可以接受的解决方案,虽然我不知道它有多优化

      List<Book> items = new JSONDeserializer<Map<String,List<Book>>>().
      use("values.values", Book.class).deserialize(json, Map.class).get("books");
      

      将生成书籍列表。如果有人可能有更“正确”的解决方案,请随时发表评论。

      【讨论】:

        【解决方案3】:

        flexjson 1.9.2 下

        List list = new JSONDeserializer>().use(null, ArrayList.class).use("values", Long.class).deserialize( episodeIds ); System.out.println(list);

        【讨论】:

          【解决方案4】:

          试试这个。它和我一起工作。

          JavaScriptSerializer jss = new JavaScriptSerializer();
          
          List<Book> lstBook = jss.Deserialize<List<Book>>("your string");
          

          【讨论】:

          • JavaScriptSerializer 不是 C# 类吗?如果它可用于 Java,我需要导入什么库?
          • 是的,它是一个 C# 类,对于 java,试试这个链接 code.google.com/p/json-io。我还没有测试它,但似乎它会工作。
          猜你喜欢
          • 1970-01-01
          • 2022-12-13
          • 2016-05-30
          • 2012-03-07
          • 2023-03-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多