我有一个硬编码的JSON字符串。
var test = "JSON STRING HERE";我正在使用jQuery。我知道有一个像getJSON这样的函数,但它会调用AJAX。我想让它解析硬编码的字符串,这样我就可以使用$.each(test, function(a,b){}))
谢谢您抽时间见我。
发布于 2009-09-23 07:11:03
原始问题:
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部分中,您可以实际看到它们在lines 572-579上做了什么。
简而言之,它们实际上会检查您是否包含了外部JSON库,如果找到了,就会使用它进行解析。如果没有包含json,它们将返回包装在函数中的json,有效地返回该json进行计算。非常棘手,但是非常聪明!
发布于 2009-09-23 09:29:25
你们知道吗,JSON的意思是"JavaScript Object Notation"?如果您对JavaScript对象表示法进行了硬编码,那么只需去掉引号,就可以完成对它的解析,因为JavaScript解析器会处理这个问题。
var jsonstr = "{prop1: 'val1', prop2: 'val2'}";
var parsed = {prop1: 'val1', prop2: 'val2'};很简单,不是吗?!!可能有一些我不知道的事情,但对我来说,很难理解用JavaScript为JavaScript编写解析器的人……当然,如果您不确定jsonstr来源的源代码的安全性,那么直接评估它可能不是最好的主意,但如果您控制源代码,尤其是如果您像问题中所说的那样对其进行硬编码,那么就去掉引号!
发布于 2009-09-23 07:23:20
下面是当数据类型设置为"json“时,jQuery在ajax请求中所做的事情(这就是getJSON在幕后所做的事情):
window["eval"]("(" + data + ")");https://stackoverflow.com/questions/1464354
复制相似问题