Javascript 将JSON.parse转换为对象数组

Javascript 将JSON.parse转换为对象数组,javascript,json,parsing,Javascript,Json,Parsing,我在做一些应该(也可能是)非常基本的事情时遇到了困难。我有一个构造函数,如下所示: function search_table(v1, v2, v3) { this.field = v1; this.condition = v2; this.value = v3; } 我的应用程序有一个搜索表数组,它获取JSON.stringify(ied),然后存储在localStorage中 我的问题是。。。当我从localStorage检索对象时,它是JSON字符串格式的。如何将

我在做一些应该(也可能是)非常基本的事情时遇到了困难。我有一个构造函数,如下所示:

function search_table(v1, v2, v3) {
    this.field = v1;
    this.condition = v2;
    this.value = v3;
}
我的应用程序有一个搜索表数组,它获取
JSON.stringify
(ied),然后存储在localStorage中

我的问题是。。。当我从localStorage检索对象时,它是JSON字符串格式的。如何将其返回到搜索表[]格式

如果可能的话,我更喜欢不使用jQuery。谢谢

我尝试过使用如下内容:

var search_array = JSON.parse(string_val);

但它不允许我访问
搜索数组[i]。例如,条件

应该可以。以下代码:

function search_table(v1, v2, v3) {
    this.field = v1;
    this.condition = v2;
    this.value = v3;
}
var arr = [new search_table(1, 2, 3), new search_table(4, 5, 6), new search_table(7, 8, 9)];

var str = JSON.stringify(arr);
console.log("stingified: ", str);

var search_array = JSON.parse(str);
var result = search_array[1].condition;
console.log("result: ", result);
提供以下输出:

stingified: [{"field":1,"condition":2,"value":3},{"field":4,"condition":5,"value":6},{"field":7,"condition":8,"value":9}]
result: 5
您的问题在代码中的其他地方,您在这里没有包括

我还想看看Travis的建议——您的浏览器是否具有对JSON函数的本机支持?尝试这些,并确保它们不会返回“未定义”:


另外,确保初始化了
i
,并且它在数组的边界内。

这应该可以工作。请提供一个示例,说明在
string\u val
中返回的内容。当我返回时:alert(search\u array)看起来与JSON相同(我假设这是正常的)。在JavaScript控制台中,它会显示“Uncaught TypeError:无法读取未定义的属性”条件。“注意:某些浏览器不支持JSON.stringify,这可能会影响您的应用程序。Travis-JSON.stringify和JSON.parse都按预期工作(输出如下)。感谢Ziesemer。我注意到,当我从上面的代码中发出警报(search_array)时,它会显示JSON字符串,但当我从您的示例中发出警报(search_array)时,它会显示[object object]、[object object]、[object object object]。alert(JSON.stringify)和alert(JSON.parse)一样,按预期返回函数stringify(){[native code]}。有什么想法吗?我刚刚试过我的alert(search\u array[0]),它把search\u array当作字符串处理。i、 e.搜索数组[0]='[',1是'{',2是''',3是'f',依此类推。@haxor-请输出并提供一个实际示例,说明您在读取字符串中看到的内容。显然,这里有些不对劲。显示所有的
[对象]
这仅仅意味着你的浏览器在数组上没有最好的toString实现,但一切仍如预期。我发现了这一点,这很奇怪。出于某种原因,我不得不对我的变量JSON.parse(JSON.parse(…)。当我调用我的local_storage_persist_对象(localStorage.setItem包装器)时,我正在对其val执行JSON.stringify。我想知道localStorage.getItem是否不会自动执行JSON.parse。你知道吗?FWIW第一次执行JSON.parse和第二次执行JSON.parse时,值是相同的,但在第一种情况下引号被转义,而在第二种情况下引号不在其中。@haxor-I thin我需要查看完整的代码才能理解-但我很高兴你能理解。
alert(JSON.stringify);
alert(JSON.parse);