解析JSON字符串

Ale*_*art 3 jquery

我有一个硬编码的JSON字符串.

var test = "JSON STRING HERE";
Run Code Online (Sandbox Code Playgroud)

我正在使用jQuery.我知道有一个像getJSON这样的函数,但这会产生一个AJAX调用.我希望它解析硬编码的字符串,以便我可以使用$.each(test, function(a,b){}))

感谢您的时间.

Gab*_*ley 11

原始问题:

jQuery指出不包括可公开访问的JSON解析器或编码器.他们希望您使用第三方库.

我推荐在json.org上托管的那个:

https://github.com/douglascrockford/JSON-js/blob/master/json2.js

或者,您可以使用Google Code上托管的jQuery-JSON插件:

http://code.google.com/p/jquery-json/


回答"为什么jQuery不能使它的解析器可用?":

jQuery实际上并没有包含任何类型的解析器.在jQuery代码库的AJAX部分,您可以实际看到他们在第572-579行上做了什么.

快速版本是他们实际检查你是否包含了一个外部JSON库,如json.org中的那个,如果找到它,他们会用它来解析.如果你没有包含一个,它们会返回包含在函数中的json,有效地返回它进行评估.非常棘手,但非常聪明!


ink*_*ibl 5

你是否认识到,JSON的意思是"JavaScript Object Notation"?如果你有JavaScript对象表示法硬编码,那么只需松开引号就可以解析它,因为JavaScript解析器会解决这个问题.

var jsonstr = "{prop1: 'val1', prop2: 'val2'}";
var parsed = {prop1: 'val1', prop2: 'val2'};
Run Code Online (Sandbox Code Playgroud)

容易,不是吗?!! 可能有一些我不知道的东西,但对我来说很难理解人们用JavaScript编写解析器的JavaScript ...当然如果你不确定你的jsonstr来源的安全性,那么评估它开箱即用可能不是最好的主意,但万一你和你只控制源码,特别是如果你像问题中所说的那样对它进行硬编码,那么就松开引号!