[英]Parse JSON string
我有一个硬编码的JSON字符串。
var test = "JSON STRING HERE";
我正在使用jQuery。 我知道有一个像getJSON这样的函数,但这会产生一个AJAX调用。 我希望它解析硬编码字符串,以便我可以使用$.each(test, function(a,b){}))
感谢您的时间。
原始问题:
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,有效地返回它进行评估。 非常棘手,但非常聪明!
你是否认识到,JSON的意思是“JavaScript Object Notation”? 如果你有JavaScript对象表示法硬编码,那么只需松开引号就可以解析它,因为JavaScript解析器会解决这个问题。
var jsonstr = "{prop1: 'val1', prop2: 'val2'}";
var parsed = {prop1: 'val1', prop2: 'val2'};
容易,不是吗?!! 可能有一些我不知道的东西,但对我来说很难理解人们用JavaScript编写解析器的JavaScript ...当然如果你不确定你的jsonstr来源的安全性,那么评估它开箱即用可能不是最好的主意,但万一你和你只控制源码,特别是如果你像问题中所说的那样对它进行硬编码,那么就松开引号!
以下是当数据类型设置为“json”时jQuery在ajax请求中执行的操作(这是getJSON所做的,在引擎盖下):
window["eval"]("(" + data + ")");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.