我的数据格式非常const variations
const variations = {
0: "{"productPriceLocal": "16990.00", "productId": "30028132"}",
1: "{"productPriceLocal": "22990.00", "productId": "30028233"}"
};
// this code doesn't work
// console.log(_.map(variations, 'productId'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.js"></script>
我希望这个转换为这样的普通JS对象,我可以正常工作
const object = {
0: {
productId: 30028132,
...
},
...
}
我尝试使用lodash,效果不佳。有谁知道,我应该怎么做?
答案 0 :(得分:2)
您遇到的第一个问题是"{"productPriceLocal": "16990.00", "productId": "30028132"}"
包含在您希望之前终止字符串的未转义引号(导致错误)。因此,如果您包含带单引号的字符串,则应修复第一个问题。
然后解析JSON对象,如下所示,应该产生你正在寻找的输出,没有lodash nessecary。
const variations = {
0: '{"productPriceLocal": "16990.00", "productId": "30028132"}',
1: '{"productPriceLocal": "22990.00", "productId": "30028233"}'
};
var output = {};
for(key in variations) {
output[key] = JSON.parse(variations[key]);
}
console.log(output);
答案 1 :(得分:1)
您可以使用数组reduce和Object.keys方法将对象映射到您想要的类型的单个对象。
//Make sure you escape the quotes in your JSON strings.
const variations = {
0: "{\"productPriceLocal\": \"16990.00\", \"productId\": \"30028132\"}",
1: "{\"productPriceLocal\": \"22990.00\", \"productId\": \"30028233\"}"
};
let parsedValues = Object.keys(variations) // Get keys as an array [0,1]
.reduce((obj, key) => {
// parse to an object.
obj[key] = JSON.parse(variations[key]);
return obj;
}, {} /* initialization object */);
console.log(parsedValues);