使用js把json字符串转为js对象的方法
ECMA-262(E3) 中没有将JSON概念写到标准中,还好在 ECMA-262(E5)中JSON的概念被正式引入了,包括全局的JSON对象和Date的toJSON方法。
1,eval方式解析,恐怕这是最早的解析方式了。如下:
var json = eval('(' + str + ')');
return json;
}
记得别忘了str两旁的小括号。
这里属性名可以使用数字,可以带引号也可以不带引号。如果属性名是纯数字,生成的对象属性可以用下表运算符[]来访问,不能用obj.123这样的方式访问。
var str1 = "{\"fa\":123,fb:333,\"fc\":\"xxx\",123:'xyz'}";
var obj1 = eval("(" + str1 + ")");
document.writeln("obj1.fa=" + obj1.fa);
document.writeln("obj1.fb=" + obj1.fb);
document.writeln("obj1.fc=" + obj1.fc);
//document.writeln("obj1.123=" + obj1.123);//语法错误
document.writeln("obj1[fa]=" + obj1["fa"]);
document.writeln("obj1[fb]=" + obj1["fb"]);
document.writeln("obj1[fc]=" + obj1["fc"]);
document.writeln("obj1[123]=" + obj1[123]);
document.write("<br/>");
2,new Function形式,比较怪异哦。如下
var json = (new Function("return " + str))();
return json;
}
var str2 = "{\"fa\":123,fb:333,\"fc\":\"xxx\",123:'xyz'}";
var obj2 = (new Function("return" + str2))();
document.writeln("obj2.fa=" + obj2.fa);
document.writeln("obj2.fb=" + obj2.fb);
document.writeln("obj2.fc=" + obj2.fc);
//document.writeln("obj1.123=" + obj1.123);
document.writeln("obj2[fa]=" + obj2["fa"]);
document.writeln("obj2[fb]=" + obj2["fb"]);
document.writeln("obj2[fc]=" + obj2["fc"]);
document.writeln("obj2[123]=" + obj2[123]);
document.write("<br/>");
3,使用全局的JSON对象,如下:
return JSON.parse(str);
}
目前 IE8(S)/Firefox3.5+/Chrome4/Safari4/Opera10 已实现了该方法,以下是部分资料:http://blogs.msdn.com/ie/archive/2008/09/10/native-json-in-ie8.aspx https://developer.mozilla.org/en/Using_JSON_in_Firefox
使用JSON.parse需严格遵守JSON规范,如属性都需用引号引起来,如下
var obj = JSON.parse(str); // --> parse error
name没有用引号引起来,使用JSON.parse所有浏览器中均抛异常,解析失败。而前两种方式则没问题。 另外必须用双引号包围属性名,单引号会有解析错误,范例:
var str3 = "{\"fa\":123,\"fb\":333,\"fc\":\"xxx\",\"123\":321}";
var obj3 = JSON.parse(str3);
document.writeln("obj3.fa=" + obj3.fa);
document.writeln("obj3.fb=" + obj3.fb);
document.writeln("obj3.fc=" + obj3.fc);
//document.writeln("obj1.123=" + obj1.123);
document.writeln("obj3[fa]=" + obj3["fa"]);
document.writeln("obj3[fb]=" + obj3["fb"]);
document.writeln("obj3[fc]=" + obj3["fc"]);
document.writeln("obj3[123]=" + obj3[123]);
document.write("<br/>");
try{
var str4 = "{fa:123,\"fb\":333,\"fc\":\"xxx\",\"123\":321}";
var obj4 = JSON.parse(str4);
} catch (err) {
document.write(err.name+":"+err.message);
}
document.write("<br/>");
try{
var str5 = "{'fa':123,\"fb\":333,\"fc\":\"xxx\",\"123\":321}";
var obj5 = JSON.parse(str4);
} catch (err) {
document.write(err.name + ":" + err.message);
}
使用js把json字符串转为js对象的方法的更多相关文章
- JS中将json字符串转为json对象的三种方式
第一种:利用JSON的parse方法,即jsonObj=JSON.parse(jsonStr); 第二种:jsonObj = eval('(' + jsonStr+ ')'); 第三种:比较难理解:j ...
- js 把json字符串转为json对象
<input type="hidden" name="data" id="data" value='[{"name&q ...
- json字符串转java对象
今天遇到一个问题,前端ajax获取到一个javaBean对象,好多方法发ajax请求需要把这个对象再传到后端,后端再根据这个对象进行操作(之前计划传递id,但发现传递id的话,后端多个方法都需要根据i ...
- js中Json字符串如何转成Json对象(4种转换方式)
js中Json字符串如何转成Json对象(4种转换方式) 一.总结 一句话总结:原生方法(就是浏览器默认支持的方法) 浏览器支持的转换方式(Firefox,chrome,opera,safari,ie ...
- JSON字符串和JS对象之间的转换
JSON字符串和JS对象之间的转换 1 json字符串转换为js对象 1.1 标准json格式字符串转换为Js对象 JSON字符串 str JSON.parse(str) eval(str) eva ...
- js将json字符串转化成json对象的方法
js将json字符串转化成json对象的方法: JSON.parse(jsonObject)
- js中json字符串转成js对象
json字符串转成js对象我所知的方法有2种: //json字符串转换成json对象 var str_json = "{name:'liuchuan'}"; //json字符串 / ...
- js中JSON的解析(将json字符串转化为对象)和序列化(将对象转化为json字符串)(函数的功能一般都挺全的,需要的时候去查看完整函数)
js中JSON的解析(将json字符串转化为对象)和序列化(将对象转化为json字符串)(函数的功能一般都挺全的,需要的时候去查看完整函数) 一.总结 1.JSON解析:JSON.parse(myJS ...
- JSON字符串转为JSON对象
在数据传输流程中,json是以文本,即字符串的形式传递的,而JS操作的是对象,所以,JSON对象(js对象)和JSON字符串之间的相互转换是关键. JSON可以有两种格式,一种是对象格式的,另一种是数 ...
随机推荐
- Json格式转换
验证Json格式可以进入 http://json.cn/ json简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构1.对象:对象 ...
- 上海敏行医学招聘物理仿真,3D图形人才
工作职能: 1.开发医学虚拟手术中的柔体仿真引擎/图形效果 2.柔体仿真引擎.和引擎开发主工程师一起完善和改进仿真引擎的开发工作. 3.3D图形效果的改进. 职位要求: 1.本科以上学历,1年以上c+ ...
- Yaf框架下类的自动加载
前面两篇博客分别讲述了PHP自带的类加载和composer中类的自动加载,其实Yaf框架也实现了基于PSR0和PSR4的类的自动加载.根据我对Yaf下类的自动加载方式的理解写下这篇博客.由于接触Yaf ...
- 解决vs2008无法切换设计视图的问题
在 Visual Studio 2008的编辑一个web页面的时候,“源视图”(Source View), 你可以自定义设计视图(Design View)为默认视图. 方法如下: 菜单:工具+选项+h ...
- java做的比较完善的FTP上传下载文件服务器源码
Filename: ftp.java Author: leetsing(elove) Create date: 2004-08-30 Use: connect to FTP server,then u ...
- iBatis的SQL注入
sqlMap中尽量不要使用$;$使用的是Statement(拼接字符串),会出现注入问题.#使用的是PreparedStatement(类似于预编译),将转义交给了数据库,不会出现注入问题:.前者容易 ...
- CMake比较实用的命令小记
最近将项目迁移到CMake进行管理,对CMake进行了一些研究,觉得有一些命令非常实用但很少有资料提到,在这里做一个总结,至于太普通常用的命令就不提了. OPTION(OPTION_VAR " ...
- How do I remove javascript validation from my eclipse project?
Right click your project Select Properties -> JavaScript -> Include Select Source tab (It look ...
- [MAC]用beamoff给VMware的Mac OS X 10.10.x加速
MAC OS X 10.10.x Yosemite在VMWare中实在是太慢了,卡出翔!好在高人多,请装beamoff!详见:https://github.com/JasF/beamoff.git C ...
- Tomcat部署web项目,虚拟目录,上下文(Context),WEB-INF,web.xml,servlet,404
Web项目的uri模型大致如下: http://localhost:8080 (/context) (/resource) 站点/上下文/资源 一. Tomcat中指定上下文(Context) 方法一 ...