0

我正在使用 Firefox 19.0.2。我收到一个大小不断变化的 JSON 字符串(输入到 JavaScript 函数中),

有时是:

var jsonstring = {"CA":"CA","NY":"NY","TX":"TX"}

有时是:

var jsonstring = {"Hello":"Hello","Goodbye":"Goodbye"}

我想创建一个这样的结果数组(在第一个示例的情况下):

data[0].value = "CA"
data[0].text = "CA"

data[1].value = "NY"
data[1].text = "NY"

data[2].value = "TX"
data[2].text = "TX"

我怎么做?

我在这里阅读了数十篇早期文章并尝试了几个for循环,但没有任何效果。

4

2 回答 2

1

您可以使用JSON.parse转换为对象(在您的示例中,您已经有一个对象):

var obj= JSON.parse('{"CA":"CA","NY":"NY","TX":"TX"}')

请记住,您不能依赖对象中属性的顺序,因此您无法在 for 循环中完成上述操作。

于 2013-03-26T15:18:41.657 回答
0

JSON.parse使用从 JSON 中获取对象后的转换如下所示:

obj = {
  CA: 'CA',
  LA: 'LA'
};

arr = [];

for (var key in obj) {
  if(!obj.hasOwnProperty(key))
    continue;
  arr.push({value: key, text: obj[key]});
}
// Output
[{ value: "CA", text: "CA" }, { value: "LA", text: "LA" }]
于 2013-03-26T15:23:35.893 回答