将JSON对象转换为另一个

时间:2018-04-20 16:46:02

标签: javascript json

我有这个json:

 [
  {
    "AF28110": 33456.75,
    "AF27989": 13297.26
  }
]

我希望将其转换为:

[ 
 { "name": "AF28110", "price": 33456.75},
 { "name": "AF27989", "price": 13297.26}
]

我尝试用.map()制作各种各样的东西但是我无法使它工作。

有没有人知道如何做到这一点? 谢谢

6 个答案:

答案 0 :(得分:5)

您可以尝试以下代码:

let output = [];
input.forEach(obj => Object.getOwnPropertyNames(obj).forEach(key => output.push({name: key, price: obj[key]})))

Object.getOwnPropertyNames将为您提供属性的名称,然后您可以将每个名称转换为单独的输出数组项。

答案 1 :(得分:3)

使用map



const data = [
  {
    "AF28110": 33456.75,
    "AF27989": 13297.26
  }
]

const out = Object.keys(data[0]).map(el => {
  return { name: el, price: data[0][el] };
});

console.log(out)




答案 2 :(得分:2)

以下是使用concatObject.keysmap的方法。您可以从数组中获取每个项目,从该对象获取键,然后将每个键映射到所需的名称/价格对象。为每个项目执行此操作,然后展平结果(使用concat)。

示例:



const arr = [{
  "AF28110": 33456.75,
  "AF27989": 13297.26
}]

const result = [].concat(...arr.map(o => Object.keys(o).map(k => ({name: k, price: o[k]}))))
console.log(result);




答案 3 :(得分:2)

如果阵列上有多个对象,则可以使用reduce



let arr = [
  {"AF28110": 33456.75,"AF27989": 13297.26},
  {"AF28111": 33456.20,"AF27984": 13297.88}
];

let result = arr.reduce((c, v) => c.concat(Object.entries(v).map(o => {return {name: o[0],price: o[1]}})), []);

console.log(result);




答案 4 :(得分:0)

试试这个,

var text = '[{"AF28110": 33456.75,"AF27989": 13297.26}]';
var obj = JSON.parse(text);
var result = [];
for (i = 0; i < obj.length; i++) {
 var keys = Object.keys(obj[i]);
 for (j = 0; j < keys.length; j++){
    result[j] = '{ "name":' +keys[j] + ', "price":' + obj[i][keys[j]]+'}';
 } 
}
console.log(result);

感谢。

答案 5 :(得分:0)

实现方式:

  • 使用Object.keys方法

var jsonObj = [
  {
    "AF28110": 33456.75,
    "AF27989": 13297.26
  }
];

var res = Object.keys(jsonObj[0]).map(item => {
  return {"name": item, "price": jsonObj[0][item] };
});

console.log(res);

  • 使用Object.getOwnPropertyNames方法

var jsonObj = [
  {
    "AF28110": 33456.75,
    "AF27989": 13297.26
  }
];

var res = Object.getOwnPropertyNames(jsonObj[0]).map(item => {
  return {"name": item, "price": jsonObj[0][item] };
});

console.log(res);

相关问题