杰克逊为阵列中的项目序列化一个键

时间:2014-01-31 02:29:51

标签: java serialization jackson

我有几个java类,第一个是第二个实例的容器。容器类有一个id和一个项目列表,如:

    public class Container {
      String id = "123";
      ArrayList<Item> items = new ArrayList<Item>();
     ...
    }

和Item类如:

    public class Item {
       String id = "123123";
       String notes = "what a day";
      ...
    }

当我序列化它时,我会得到类似的东西:

   { "id" : "123",
     "items" : [ {
       "id" : "123123",
       "notes" : "what a day"
      }, {
       "id" : "456456",
       "notes" : "what a night"
      }
      ]
  }

但是,我想要的是:

    {
        "id": "123",
        "items": [
            {
             "123123": [
                {
                "notes": "what a day"
                }
             ],
             "456456": [
                {
                "notes": "what a night"
                }
             ]
            }
        ]
    }

其中Item类中的“id”是“items”数组中元素的标识符。 如何改变java类结构,或者为jackson提供哪些指令来实现所需的结构?

1 个答案:

答案 0 :(得分:0)

查看http://jsonlint.com/

由于JSON是一组name/value对,您将收到此错误

Parse error on line 4:
...: [        "123123": {            "not
----------------------^
Expecting '}', ',', ']'

如果你想为keys对提供动态name/value,你总是可以在程序逻辑中写出JSON(Not Jackson)