如何访问每个键有多个值的JSON对象?

时间:2017-10-27 11:54:02

标签: javascript jquery json

目前我遇到的问题似乎很愚蠢,但我不知道答案。

我正在尝试访问此JSON对象:

 var custom_fields = 
 {
   "28246": 5123,5124,5125
 }

我想从该密钥中获取每个值。如果它是一个嵌套对象,我会知道如何访问它,但它并不令人遗憾(它来自一个API,我不能遗憾地改变JSON响应)

我尝试的内容如下:

for (var key in custom_fields) {
   if (custom_fields.hasOwnProperty(key)) {
      console.log(key + " -> " + custom_fields[key]);
    }
}

这里的问题是结果是这样的:

1 -> 5
2 -> 1
3 -> 2
4 -> 3
5 -> ,
6 -> 5
...etc...

欢迎任何建议,我试图在javascript / Jquery中访问它。

感谢您提前帮助!

3 个答案:

答案 0 :(得分:3)

我假设数据采用这种格式(注意字符串文字):

var custom_fields = { 
   "28246": "5123,5124,5125" 
}

如果是这种情况,您可以使用String.split。 在你的情况下,它将是这样的:

const values = custom_fields['28246'].split(',');

28246的值现在作为数组存储在新变量values中:

['5123','5124','5125']

如果要将所有值解析为整数,建议使用Array.map

const valuesAsInt = custom_fields['28246'].split(',').map(value => parseInt(value);

这将导致这一点:

[5123, 5124, 5125]

免责声明:使用较新的ECMAScript功能(如Array.map)时,请确保使用支持此功能的浏览器包含polyfill。

答案 1 :(得分:0)

您可以使用split函数访问它,它会将其转换为数组,然后从该数组中获取值,如下面的代码。

var data = {
  "28246": '5123,5124,5125'
}
var arr = data['28246'].split(',');
$.each(arr, function( index, value ) {
  console.log(value);
});

答案 2 :(得分:0)

您可以按','拆分并使用array.map和' +'将每个元素转换为整数。操作者:



 var custom_fields = 
 {
   "28246": "5123,5124,5125"
 }

custom_fields["28246"] = custom_fields["28246"].split(',').map(el => +el);
console.log(custom_fields);
console.log(custom_fields["28246"][0], custom_fields["28246"][1], custom_fields["28246"][2]);