将JSON值转换为JavaScript数组

时间:2019-07-19 07:23:00

标签: javascript arrays json

我想将JSON字符串转换为包含JSON值的一组数组。在json.stringify(jsonmybe)之后,并警告它显示[{"role":"noi_user"},{"role":"bert_user"}](我将其视为JSON)。我想获取noi_userbert_user并将它们设置为javascript数组。类似于['noi_user','bert_user'],每个值都带有引号。

我做了var stringy = json.parse(),警报显示了[object Object]。并进一步添加此行

for (var i = 0; i < stringy.length; i++) {
    arr.push(stringy[i]['role']);}

和我得到的arr是处于警报状态时的逗号值,但是逗号缺失,因为我在文本字段中显示了它们,并且它变成了一个长字符串,如noi_userbert_user

我真正想要的是从[{"role":"noi_user"},{"role":"bert_user"}]['noi_user','bert_user']

4 个答案:

答案 0 :(得分:4)

使用JSON.parse,然后缩小以获取所需的内容,

var s = `[{"role":"noi_user"},{"role":"bert_user"}]`

var arr = []
try {
  arr = JSON.parse(s).reduce((acc, val)=>[...acc, val.role], [])
} catch (e){
  console.log("Invalid json")
}
console.log(arr)

答案 1 :(得分:1)

这是您想要的东西吗?您可以在数组上进行映射,只需提取每个数据的role属性即可。

const jsonString = ...
const data = JSON.parse(jsonString).map(data => data.role);
console.log(JSON.stringify(data, null, 2));

JSON使用双引号分隔字符串和字段名称。

答案 2 :(得分:0)

所以您有一个

之类的JSON字符串。
  

'[{“ role”:“ noi_user”},{“ role”:“ bert_user”}]'

您想要将其转换为对象,然后提取每个元素的“角色”字段的值,并将它们全部放入数组中。

您的示例json字符串在“角色”字段中包含一组用户对象。以下代码获取此列表,循环遍历每个用户对象,并将每个对象的角色放入单独的数组roleList中。

    var jsonStr = '[{"role":"noi_user"},{"role":"bert_user"}]';
    
    var userObjList = JSON.parse(jsonStr);
    var roleList = [];
    userObjList.forEach(userObj => {
        roleList.push(userObj.role);
    });
    console.log(roleList);

答案 3 :(得分:0)

您可以创建一个自定义函数,以在PHP中生成某种array_values,但采用缩进和二维级别,如下所示:

function array_values_indented (input) {
  var tmpArr = []
  for (key in input) {
    tmpArr[tmpArr.length] = input[key]['role']
  }
  return tmpArr
}

var object = JSON.parse('[{"role":"noi_user"},{"role":"bert_user"}]');
var result = array_values_indented(object);
console.log(result);