我有一个复杂的数据结构,我需要转换为JSON。问题是我的字段名称和值都在一个数组中。
例如,我有以下内容(从我的代码库中简化):
let SampleData = [
{ Field: 'Key', Value: '7'},
{ Field: 'City', Value: 'Some City'},
{ Field: 'Description', Value: 'Some Description'}
];
基本上我的数据是一个数组,其中第一个元素是数据库列名,第二个元素是列中的数据。我正在尝试获取一个JSON对象:
{ Key: 7, City: 'Some City', Description: 'Some Description' }
我的真实代码中的字段和数据是对象中的结构,所以我不能简单地使用Object.create()或Object.assign(),只要我能够工作。
我已经尝试了循环来构建一个简单的字符串,然后使用JSON.parse将它拆开,但这似乎是一些我认为会更简单的开销。
答案 0 :(得分:5)
正如你所问,这是怎么做的:
let array = [{
Field: 'Key',
Value: '7'
},
{
Field: 'City',
Value: 'Some City'
},
{
Field: 'Description',
Value: 'Some Description'
}
];
// #1 Mapping the array to an object...
let obj = {};
array.forEach(item => obj[item.Field] = item.Value);
// #2 Converting the object to JSON...
let json = JSON.stringify(obj);
console.log(json);

答案 1 :(得分:1)
您可以尝试以下方法。我使用了spread operator(ES6)和Object.assign来创建对象,然后将其转换为json字符串。
let SampleData = [
{ Field: 'Key', Value: '7'},
{ Field: 'City', Value: 'Some City'},
{ Field: 'Description', Value: 'Some Description'}
];
let obj = Object.assign(...SampleData.map( x => Object.values(x)).map(y => ({[y[0]]: y[1]})));
console.log(obj);
//{ Key: "7", City: "Some City", Description: "Some Description" }
console.log(JSON.stringify(obj));

答案 2 :(得分:0)
我也有类似的要求,这是我达到要求的方式。
var ranges: segmentRange[] = new Array(2);
ranges[0] = { minimumPercentage: 50, maximumPercentage: 60 };
ranges[1] = { minimumPercentage: 30, maximumPercentage: 40 };
const segmentRanges = { segmentRanges: ranges };
return JSON.stringify(segmentRanges);
输出:
{“ segmentRanges”:[{“ minimumPercentage”:50,“ maximumPercentage”:60},{“ minimumPercentage”:30,“ maximumPercentage”:40}]}}
HTH,