【问题标题】:How to add a name for each element of a list in Jackson如何为杰克逊列表的每个元素添加名称
【发布时间】:2016-07-18 10:46:23
【问题描述】:

是否可以使用 JACKSON 为 JSON 中列表的每个元素设置名称?

例如,我有以下 JSON:

{"result": [
    {
      "name": "ABC",
      "age": "20"
    },{
      "name": "DEF",
      "age": "12"
    }
]}

但我需要这个:

{"result": [
    person: {    // << this is the name
      "name": "ABC",
      "age": "20"
    },
    person: {
      "name": "DEF",
      "age": "12"
    }
]}

谢谢大家!

更新

大家好!

我错了!正确的形式如下:

{"result": [
    {
       person: {    // << this is the name
         "name": "ABC",
         "age": "20"
       }
    },
    {
       person: {
         "name": "DEF",
         "age": "12"
       }
    }
]}

【问题讨论】:

  • 这在 JSON 中是不可能的。你有一个数组或一个对象。如果你有一个对象,键必须是唯一的。
  • JSON 中没有列表项的名称。你必须把它变成一个对象。但每个键只能有一个值 - 所以person 两次将不起作用

标签: javascript java json groovy jackson


【解决方案1】:

在纯 Javascript 中,您可以使用 Array#map 并返回一个带有 person 属性的新对象。

var object = { result: [{ name: "ABC", age: "20" }, { name: "DEF", age: "12" }] };

object.result = object.result.map(function (a) {
    return { person: a };
});

console.log(object);

【讨论】:

  • 以防万一,这就是 OP 实际要求的,在 groovy 中也是如此:object.result.collect{ [person: it] }
  • 也许,我不知道 groovy。
猜你喜欢
  • 1970-01-01
  • 2019-12-06
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 2020-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多