JS中对象与字符串的互相转换
2015-07-03 13:22
573 查看
在使用 JSON2.JS 文件的 JSON.parse(data) 方法时候,碰到了问题:
JSON.parse方法在遇到不可解析的字符串时,会抛出SyntaxError异常
一、Jquery插件支持的转换方式
二、浏览器支持的转换方式(Firefox,chrome,opera,safari,ie9,ie8)等浏览器
三、Javascript支持的转换方式
四、JSON官方的转换方式
http://www.json.org/,提供了一个json.js,这样ie8(兼容模式),ie7和ie6就可以支持JSON对象以及其stringify()和parse()方法;
示例代码如下:
json字符串的格式一定要标准,key和value一定要用双引号包括,否则会出线解析异常
throw new SyntaxError('JSON.parse');
JSON.parse方法在遇到不可解析的字符串时,会抛出SyntaxError异常
JSON.parse(text, reviver) This method parses a JSON text to produce an object or array. It can throw a SyntaxError exception. The optional reviver parameter is a function that can filter and transform the results. It receives each of the keys and values, and its return value is used instead of the original value. If it returns what it received, then the structure is not modified. If it returns undefined then the member is deleted. text 必需。 一个有效的 JSON 字符串。 reviver 可选。 一个转换结果的函数。 将为对象的每个成员调用此函数。 如果成员包含嵌套对象,则先于父对象转换嵌套对象。 对于每个成员,会发生以下情况: 如果 reviver 返回一个有效值,则成员值将替换为转换后的值。 如果 reviver 返回它接收的相同值,则不修改成员值。 如果 reviver 返回 null 或 undefined,则删除成员。
一、Jquery插件支持的转换方式
var strA = '{"firstname":"chen","surname":"pingzhao","phone":["010-12345678","010-23456789"]}'; $.parseJSON( strA ); jQuery.parseJSON(strA); var fields = $("select, :radio").serializeArray();
二、浏览器支持的转换方式(Firefox,chrome,opera,safari,ie9,ie8)等浏览器
JSON.parse(jsonstr); //可以将json字符串转换成json对象 JSON.stringify(jsonobj); //可以将json对象转换成json对符串 注:ie8(兼容模式),ie7和ie6没有JSON对象,需要引入 json.js 或 json2.js。
三、Javascript支持的转换方式
eval('(' + jsonstr + ')'); 可以将json字符串转换成json对象,注意需要在json字符外包裹一对小括号 注:ie8(兼容模式),ie7和ie6也可以使用eval()将字符串转为JSON对象,但不推荐这些方式,这种方式不安全eval会执行json串中的表达式。
四、JSON官方的转换方式
http://www.json.org/,提供了一个json.js,这样ie8(兼容模式),ie7和ie6就可以支持JSON对象以及其stringify()和parse()方法;
示例代码如下:
<script type="text/javascript"> //示例1:此示例使用 JSON.parse 将 JSON 字符串转换为对象 var strA = '{"firstname":"chen","surname":"pingzhao","phone":["010-12345678","010-23456789"]}'; var strA = JSON.parse(strA); document.write(strA.surname + ", " + strA.firstname + ", "+ strA.phone); //示例2:此示例使用 JSON.parse 将 JSON 字符串转换为对象 调用回调函数 var strB = '{ "teststart": "1990-01-01T12:00:00Z", "testend": "2015-12-25T12:00:00Z" }'; var strB = JSON.parse(strB, dateReviver); document.write("<br/><br/>"+strB.teststart.toUTCString()); function dateReviver(key, value) { var a; if (typeof value === 'string') { a = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value); if (a) { return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],+a[5], +a[6])); } } return value; }; </script>
json字符串的格式一定要标准,key和value一定要用双引号包括,否则会出线解析异常
相关文章推荐
- JavaScript跨域总结与解决办法
- jstl
- javascript 十六进制与RGB颜色值的相互转换
- ExtJs 入门教程二十[数字框 :NumberField]
- Javascript牛刀小试
- JS 节点属性
- 第一章 JavaScript简介。
- 使用jspdf生成pdf报表
- JavaScript事件驱动机制&定时器机制
- JavaScript事件驱动机制&定时器机制
- js中关于数据类型的转换
- JavaScript中的可枚举属性与不可枚举属性
- JSON相关知识汇总
- 程序员如何学好JavaScript?
- staxon完美实现Xml与Json互转
- JS 实现简单进度条
- javascript表格的渲染组件
- Jsoup学习笔记2:Jsoup解析HTML代码标签与属性
- JS 设置属性值
- ExtJs 入门教程十九[其它 :Ext]