【问题标题】:Converting Json object in to array using lodash使用 lodash 将 Json 对象转换为数组
【发布时间】:2017-03-01 20:59:58
【问题描述】:

我正在尝试将我的 JSON 结果转换为一个数组以将其绑定到我的 Kendo 控件。 我得到的 JSON 结果如下。

"Issues": [
    {
        "Id": null,
        "Key": null,
        "Values": [
            {
                "Key": "Display Name",
                "Value": "Rya"
            },
            {
                "Key": "UserName",
                "Value": "RH"
            },
            {
                "Key": "Count",
                "Value": "350"
            }
        ]
    },
    {
        "Id": null,
        "Key": null,
        "Values": [
            {
                "Key": "Display Name",
                "Value": "Mike"
            },
            {
                "Key": "UserName",
                "Value": "ML"
            },
            {
                "Key": "Count",
                "Value": "90"
            }
        ]
    }
]

我需要将它绑定到 Kendo 控件的数组如下。

 { "Display Name": 'Rya', "UserName" : "RH", value: 350 },
 { "Display Name": 'Mike', "UserName" : "ML", value: 90 }

i)我不想硬编码字符串“显示名称”、“用户名”、“RH”。我试过 v.Values[0].Key: v.Values[0].Value,但没有用。

ii) 另外我不知道会出现多少“键、值”对,所以我需要遍历值并生成数组而不是固定的

category: v.Values[0].Value, 
UserName: v.Values[1].Value,
  value: v.Values[2].Value,
.
.
.
score: v.values[n].value

【问题讨论】:

  • 提供这个新数组的样例
  • 到目前为止您尝试过什么?编辑以包含代码和适当的语言标签。
  • @JonathanPortorreal 新数组应该看起来像 { category: 'Rya', value: 350 }, { category: 'Mike', value: 90 }

标签: json object lodash


【解决方案1】:

如果你使用的是 ES6,在这种情况下你真的不需要 lodash:

var r = json.Issues.map(v => ({ 
  category: v.Values[0].Value, 
  value: v.Values[2].Value,
}));

http://codepen.io/cjke/pen/RprJdG?editors=0010

如果想用lodash还是不用-ES6,那么:

var r = _.map(json.Issues, function(v) { 
  return {
    category: v.Values[0].Value, 
    value: v.Values[2].Value,
  }
});

【讨论】:

  • 谢谢。我正在尝试使用 typescript 在 Angular2 中开发它。
  • 如果有效,请务必将其标记为正确,以便问题/答案对的未来读者可以看到有效的方法。
  • 嗨,克里斯,一个简单的问题。在这里,我需要“显示名称”和“计数”,而不是类别和值。另外我不想在这里硬编码这些项目。因为我的 json 可以有任意数量的字段。所以基本上像这样 - { "Display Name": 'Rya', "User Name" : "RH", "Count": 350 .... },但是动态的,因为可能添加了第四个字段。
  • 我不确定我是否理解这个问题 - 你能发布一个新问题以便理解吗?或者,也许用“编辑”和下面的新内容更新问题
  • 嗨,克里斯,你有机会看看吗。
猜你喜欢
  • 2019-08-09
  • 1970-01-01
  • 2016-08-06
  • 2019-01-26
  • 1970-01-01
  • 2019-04-18
  • 2015-10-12
相关资源
最近更新 更多