【发布时间】:2019-01-13 08:41:44
【问题描述】:
我有初始数组,应该迭代并创建新对象。初始数组为:
let array = [
{key: "key1", translation: "some text 1"},
{key2: "key2", translation: "some text 2"},
{key3: "key3", translation: "some text 3"},
];
然后我迭代它并创建对象:
const final = {};
const language = "eng";
for (let item of array) {
final[item.key] = {};
final[item.key][language] = item.translation;
}
它最终成为对象:
{
key1: {
eng: "Some text 1"
},
key2: {
eng: "Some text 2"
},
key3: {
eng: "Some text 3"
}
}
我需要将这个外部键(key1、key2 和 key3)用双引号括起来,所以最终对象变为:
{
"key1": {
eng: "Some text 1"
},
"key2": {
eng: "Some text 2"
},
"key3": {
eng: "Some text 3"
}
}
【问题讨论】:
-
不明白这个问题?!
JSON.stringify(array)会做你想做的事吗?! -
“我最终得到”...你呢?也许这就是你用来检查它的显示方式,因为那时它是一个对象,而不是 JSON。 JSON 是文本。 JSON.stringify() 将产生一个有效的 JSON 字符串。目前尚不清楚您是如何得出结论的,或者您真正担心的是什么。
-
为什么需要这么奇怪的格式?
-
“外部键被双引号,内部键(语言)应该保持不被引用”......这不是有效的 JSON,所以不清楚为什么你会认为这是可取的。你有什么可能的理由想要那个?我看不出它对以后有什么帮助,它所做的一切使得你发送 JSON 的任何程序都不太可能正确读取它。
-
是的,您需要了解对象和 JSON 之间的区别。 JSON 是对象的文本表示。调试代码时,您还可以检查对象并查看对象的文本表示。它可能碰巧也可能不是 JSON 表示。但一般来说,当您想将数据发送到应用程序之外的某个地方时,您只需要主动创建 JSON,例如在 AJAX 请求中。如果您只是将其传递给更多 JS 代码,例如正如您提到的将其提供给 React 方法,然后将其保留为对象。
标签: javascript json object key double-quotes