jQuery.parseJSON()函数用于将格式完好的JSON字符串转为与之对应的JavaScript对象。
网站建设哪家好,找创新互联建站!专注于网页设计、网站建设、微信开发、微信平台小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了左贡免费建站欢迎大家使用!
所谓"格式完好",就是要求指定的字符串必须符合严格的JSON格式,例如:属性名称必须加双引号、字符串值也必须用双引号。
如果传入一个格式不"完好"的JSON字符串将抛出一个JS异常,例如:以下字符串均符合JSON格式,但它们不是格式完好的JSON字符串(因此会抛出异常):
//
以下均是字符串值,省略了两侧的引号,以便于展现内容
{id:
1}
//
id是属性名称,必须加双引号
{'id':
1}
//
id是属性名称,必须用双引号(不能用单引号)
{"name":
'CodePlayer'}
//
name属性的值是字符串,必须用双引号(不能用单引号)
JSON标准不允许字符串中出现"控制字符",例如:一个Tab或换行符。
$.parseJSON('{"name":
"Code\tPlayer\n"}');
//
多数情况下,它会抛出一个错误,因为JS解析器会将字符串中的\t或\n等转义直接视作字面值,起到Tab或换行的效果。
//正确写法应该如下(使用两个反斜杠,以免被JS解析器直接转义\t或\n):
$.parseJSON('{"name":
"Code\\tPlayer\\n"}');
如果浏览器提供了一个本地的JSON.parse()方法,则jQuery将使用它来解析JSON字符串。
在jQuery
1.9之前(不含1.9):如果传入一个空字符串、null或undefined,该函数将返回null,而不是抛出一个错误,即使它不是有效的JSON字符串。
该函数属于全局的jQuery对象。
jQuery中使用jQuery.parseJSON()方法将字符串转为json格式
例如:
jQuery.parseJSON('{"test":1}');
注意:
传入格式有误的 JSON 字符串可能导致抛出异常。例如,下面这些无效的 JSON 字符串:
{test: 1} //(test 没有使用双引号包裹).
{'test': 1} //('test' 用了单引号而不是双引号包裹).
"{test: 1}" //(test 没有使用双引号包裹).
"{'test': 1}" //('test' 用了单引号而不是双引号包裹).
"'test'" //('test' 用单引号代替双引号).
".1" //(number 必须以数字开头; "0.1" 将是有效的).
"undefined"// (undefined 不能表示一个 JSON 字符串; 然而null,可以).
"NaN" //(NaN 不能表示一个 JSON 字符串; 用Infinity直接表示无限也是不允许的).
扩展:
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(网络传输速率)。
serialize()返回值是字符串。
serializeArray()此方法返回的是JSON对象而非JSON字符串。需要使用插件或者第三方库进行字符串化操作。
jquery1.4API中有个例子是这么把JSON对象转成字符串的。
示例
描述:
取得表单内容并插入到网页中。
HTML 代码:
p id="results"bResults:/b /p
form
select name="single"
optionSingle/option
optionSingle2/option
/select
select name="multiple" multiple="multiple"
option selected="selected"Multiple/option
optionMultiple2/option
option selected="selected"Multiple3/option
/selectbr/
input type="checkbox" name="check" value="check1"/ check1
input type="checkbox" name="check" value="check2" checked="checked"/ check2
input type="radio" name="radio" value="radio1" checked="checked"/ radio1
input type="radio" name="radio" value="radio2"/ radio2
/form
jQuery 代码:
var fields = $("select, :radio").serializeArray();
jQuery.each( fields, function(i, field){
$("#results").append(field.value + " ");
});
eval函数语法
eval(codes);
codes -- 字符串形式的表达式或语句
eval函数返回值
如果没有参数,返回undefined
如果有返回值将返回此值,否则返回undefined
如果为表达式,返回表达式的值
如果为语句返回语句的值
如果为多条语句或表达式返回最后一条语句的值
在使用eval转化字符串为json时,必须要注意,字符串必须可以转化成json对象,否则不能转换,举例如下
var str = " { ' name ' : ' value '}";
var obj = eval('('+str+')');
JSON.stringify(要转换的object对象)。此方法返回的就是一个类似于 {“name”:"张三","age":18} 这样的字符串
/**
* 将json字符串转换为对象的方法。
*
* @public
* @param json字符串
* @return 返回object,array,string等对象
**/
jQuery.extend({
/** * @see 将json字符串转换为对象 * @param json字符串 * @return 返回object,array,string等对象 */
evalJSON: function(strJson) {
return eval("(" + strJson + ")");
}
});