JS中对象与字符串的互相转换

在使用 JSON2.JS 文件的 JSON.parse(data) 方法时候,碰到了问题:

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一定要用双引号包括,否则会出线解析异常

时间: 2024-10-13 05:23:19

JS中对象与字符串的互相转换的相关文章

[转]JS中对象与字符串的互相转换

原文地址:http://www.cnblogs.com/luminji/p/3617160.html 在使用 JSON2.JS 文件的 JSON.parse(data) 方法时候,碰到了问题: throw new SyntaxError('JSON.parse'); 查询资料,大概意思如下: JSON.parse方法在遇到不可解析的字符串时,会抛出SyntaxError异常. 即:JSON.parse(text, reviver),This method parses a JSON text t

angular中对象与字符串之间的转换

1.angular 里 字符串与对象互转  angular.toJson();将字符串转成对象 angular.forJson(); 将字符串转成对象  2.angular 循环   <script src="../js/angular.min.js" type="text/javascript" charset="utf-8"></script>     <script type="text/javasc

js 中数字与字符串之间的转换

数字转换为字符串 var num  = 123: 1.num.toString 2."" + num 3.String(num) 将数字转化为格式化后的字符串 num.toFixed(2)   小数点后显示两位 toExponential() 科学计数法 toPrecision() 精确位数 原文地址:https://www.cnblogs.com/anqiang1995/p/10034558.html

js 中 数组和字符串之间的转换

var abc = new Array(a,b,c,d,e); abc.join('-') // 结果 : a-b-c-d-e-f var obk = 'a-b-c-d-e'; obk.split('-') // 结果 :['a','b','c','d','e','f'] split 和 join 就相当于 php的explode和implode 原文地址:https://www.cnblogs.com/G921123/p/10184529.html

javascript中Date对象与字符串之间的转换

使用js中new Date()得到的Data对象转换为字符串之后往往未能符合我们想要的期望,今天我就“Date对象与字符串之间的转换”这个主题做一个简易的分析: 常见的转换方式有: 一.toString() —— 把 Date 对象转换为字符串 1 var str = new Date().toString(); 2 console.log(str); 3 4 //output: 5 //Mon Oct 12 2015 11:13:22 GMT+0800 二.toTimeString() ——

js中格式化时间字符串

.net 程序员肯定有遇到过,将一个对象json序列化之后Date 字段 就会转化成 '/Date(1370770323740)/' 这种格式的数据,下面介绍一种在js中,关于时间格式的转换. <script> function formatDate(date, format) { if (!date) return; if (!format) format = "yyyy-MM-dd"; switch(typeof date) { case "string&qu

Js中常用的字符串,数组,函数扩展

由于最近辞职在家,自己的时间相对多一点.所以就根据prototytpeJS的API,结合自己正在看的司徒大神的<javascript框架设计>,整理了下Js中常用一些字符串,数组,函数扩展,一来可以练练手,二来也锻炼下自己的代码能力.由于代码里面的注释自认为已经非常详细,所以就直接贴代码了. 1. 字符串扩展: ;(function() { var method, stringExtends = { /** * 删除字符串开始和结尾的空白 * @returns {string} */ stri

原生 JS 中对象相关 API 合集

https://juejin.im/entry/58f8a705a0bb9f0065a4cb20 原文链接:https://microzz.com/2017/04/20/jsobject/ 原生 JavaScript 中对象相关 API 合集 - 对象篇.现在 jQuery 已经没有那么有优势了,原生 JS 赶紧学起来... -- 由microzz分享 Microzz [email protected] 主页 文章 标签 GitHub 关于我 掘金专栏 SegmentFault Vue音乐播放器

C++中数字与字符串之间的转换,别人的,

C++中数字与字符串之间的转换 1.字符串数字之间的转换 (1)string --> char *   string str("OK");   char * p = str.c_str(); (2)char * -->string   char *p = "OK";   string str(p); (3)char * -->CString    char *p ="OK";   CString m_Str(p);   //或者