【问题标题】:What would be better with POJO object listPOJO 对象列表会更好
【发布时间】:2016-04-01 03:09:05
【问题描述】:

我的 JSON 结构如下:

 {
  "bag" : {
    "descrition" : "my bag 1",
    "text" : 123456,
    "item" : {
      "-K5D9mi--s6jPWNwrNEu" : {
        "name" : "name item",
        "value" : 60
      },
      "-K5R3ugcTVFnNlAEAHus" : {
        "name" : "name item 2",
        "value" : 55
      }}}
 }

如果我的 POJO 类如下所示:

    public class Item {
        String name;
        int value;
   }
   public class Bag {
      String descrition;
      String text;
      List<Item> item;
    }

当我使用下面的代码反序列化对象时出现错误,指的是对象列表“item”:“JsonMappingException: Can not deserialize instance of java.util.ArrayList out of START_OBJECT token”

 Firebase ref = new Firebase("myAdressFirebase/bag/");
        ref.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                Bag bag = dataSnapshot.getValue(Bag.class);
            }
            @Override
            public void onCancelled(FirebaseError firebaseError) {
            }
        });

对我来说,在一次调用中重新获得父对象 Firebase 及其子对象的最佳 POJO 是什么?

【问题讨论】:

    标签: android serialization jackson firebase firebase-realtime-database


    【解决方案1】:

    您不能在项目列表中序列化对象/哈希映射结构。没有放置键的位置,例如 "-K5D9mi--s6jPWNwrNEu""-K5R3ugcTVFnNlAEAHus" ;-)。

    自从我使用 Jackson 以来已经有很长时间了,但我相当确定您可以使用 Map&lt;String, Item&gt; 作为您班级 Bagitem 属性的类型。即我希望 Jackson 提供从 JSON Object 到 Java Map 接口的转换器,反之亦然。

    【讨论】:

    • 彼得!谢谢!就是这样,将List替换为HashMap。像这样: Bag 类上的“HashMap Item”。要检索 HashMap 的值,请执行以下操作: for (Map.Entry entry:.Bag.getItem () entrySet ()) { Item item = entry.getValue ();
    • 啊抱歉,我忘记将 Map&lt;String, Item&gt; 文本格式化为代码。我为我的答案修复了它。感谢您的评论。
    猜你喜欢
    • 2014-12-20
    • 2018-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-15
    • 1970-01-01
    • 2013-06-27
    • 1970-01-01
    相关资源
    最近更新 更多