简体   繁体   中英

How to access JSON-object with multiple values per key?

At the moment I am stuck with a problem that just seems stupid, but I don't know the answer to it.

I am trying to access this JSON-object:

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

I would like to get each value from that key. I would know how to access it if it was a nested-object, but it isn't sadly (it is coming from an API, which I can't change the JSON-response from sadly)

What I tried already is the following:

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

The problem here is that the result will be like this:

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

Any suggestions are welcome, I am trying to access it in javascript/Jquery.

Thanks for helping in advance!

I assume that the data is in this format (note the string literals):

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

If that is the case, you can use String.split . In your case, it would be something like this:

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

The values of they key 28246 are now stored in the new variable values as an array:

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

If you want to parse all values to integers, I suggest using Array.map :

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

Which will lead to this:

[5123, 5124, 5125]

Disclaimer: When using newer ECMAScript features such as Array.map, be sure to either use a browser which supports this our include a polyfill.

You can access it by using split function which will convert it into an array and then get the values from that array as below code.

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

You can split by ',' and transform each element to integer by using array.map and '+' operator:

  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]); 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM