什么是JSON

JSON(JavaScript Object Notation)是一种优美的JavaScript对象创建方法。JSON也是一种轻量级数据交换格式。JSON非常易于人阅读与编写,同时利于机器解析与生成。JSON是在AJAX中代替XML交换数据的更佳方案。

JSON格式与语法

var jsonobject=
{
        //对象内的属性语法(属性名与属性值是成对出现的)
        propertyname:value,

//对象内的函数语法(函数名与函数内容是成对出现的)
        functionname:function(){...;}
};

jsonobject -- JSON对象名称
propertyname -- 属性名称
functionname -- 函数名称
一对大括号,括起多个"名称/值"的集合
JSON使用"名称/值"对的集合表示,也可以被理解为数组(Array)
属性名或函数名可以是任意字符串,甚至是空字符串(见下面示例)
逗号用于隔开每对"名称/值"对

字符串格式json转化成json对象有3种方式:
1:js下用eval生成JSON对象  ---通过eval() 函数可以将JSON字符串转化为对象。
2:使用函数方式
3:使用js的json库或者jQuery提供的js库  --- 如果基于安全的考虑的话,最好是使用一个 JSON 解析器。 一个 JSON 解析器将只接受 JSON 文本。所以是更安全的。

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>字符串格式json如何转化成json对象</title>
  6. <style type="text/css"></style>
  7. <script type="text/javascript">
  8. //方法1:js下用eval生成JSON对象
  9. function strJsonToJsonByEval(jsonData){
  10. var json = eval("(" + jsonData +")");//转换为json对象
  11. return json;
  12. }
  13.  
  14. //方法2:使用函数方式
  15. function strJsonToJsonByFunction(jsonData){
  16.   return ( new Function("return "+jsonData) )();
  17. }
  18.  
  19. window.onload = function() {
  20. var jsonData = " {name1:'1',value1:'a',name2:'2',value2:'b' }";
  21. var json1 = strJsonToJsonByFunction(jsonData);
  22. alert("Function || " + json1.name1 + " --- " + json1.name2);
  23.  
  24. var json2 = eval("( {name1:'1',value1:'a',name2:'2',value2:'b' } )");
  25. alert("eval(\"(\"jsonData\")\") || " + json2.value1 + " --- " + json2.value2);
  26.  
  27. var json3 = strJsonToJsonByEval(jsonData);
  28. alert("Eval || " + json3.value1 + " --- " + json3.value2);
  29. }
  30. </script>
  31. </head>
  32. <body>
  33. </body>
  34. </html>

写成一个方法:

  1. /*
  2. * @method 将拼接好字符串格式的json 转成json对象
  3. * @param jsonData param fomart:
  4. * var jsonData = "{name1:'1',value1:'a',name2:'2',value2:'b' }";
  5. * @return json;
  6. */
  7. function strJsonToJson(jsonData){
  8. //方法1:js下用eval生成JSON对象
  9. //var json = eval("(" + jsonData +")");//转换为json对象
  10. //return json;
  11. //方法2:使用函数方式
  12.   return ( new Function("return "+jsonData) )();
  13. }

jQuery

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>jQuery插件方式解析json</title>
  6.  
  7. <script type="text/javascript" src="jquery-1.9.1.js"></script>
  8. <script type="text/javascript" src="jquery.json-2.4.js"></script>
  9. <script type="text/javascript">
  10. /*
  11. jquery-1.9.1.js 提供的方法。
  12. jQuery.parseJSON( json ) 返回: Object
  13. 接受一个标准格式的 JSON 字符串,并返回解析后的 JavaScript 对象。
  14.  
  15. 传入格式有误的 JSON 字符串可能导致抛出异常。例如,下面这些 JSON 字符串格式都不对:
  16. {test: 1} (test 没有使用双引号包裹).
  17. {'test': 1} ('test' 用了单引号而不是双引号包裹).
  18. 另外,如果你什么都不传入,或者传入空字符串、null、undefined 等,parseJSON 都会返回 null 。如果浏览器原生实现了 JSON.parse, jQuery 则会使用它来解析字符串。
  19. */
  20. var strJson = '{"name":"John"}';
  21. //var strJson = "{name:'John'}";//错误格式,必须严格满足一个标准格式的 JSON 字符串,key--value 都用双引号包裹
  22. var obj = jQuery.parseJSON(strJson);
  23. alert( obj.name === "John" ); // true
  24.  
  25. var obj2 = $.parseJSON(strJson);
  26. alert( obj2.name ); //John
  27.  
  28. /*
  29. jquery.json-2.4.js 提供的方法。
  30. 下面的方法在接受一个标准格式的 JSON 字符串 并不是很严格,只要是键值对形式的都可以。
  31. http://code.google.com/p/jquery-json/
  32. toJSON: Serializes a javascript object, number, string, or array into JSON.
  33. evalJSON: Converts from JSON to Javascript, quickly, and is trivial.
  34. */
  35.  
  36. //Json Object
  37. var json = { plugin: 'jquery-json', version: 2.4 };
  38.  
  39. //toJSON: Json Object ---> String Json
  40. var encoded = $.toJSON( json );// '{"plugin":"jquery-json","version":2.4}'
  41.  
  42. //evalJSON: String Json ---> Json Object
  43. var jsonObject = $.evalJSON( encoded );
  44.  
  45. var name = $.evalJSON( encoded ).plugin;// "jquery-json"
  46. var version = $.evalJSON(encoded).version;// 2.4
  47.  
  48. alert( "toJSON: " + encoded + " ,typeof " + typeof encoded + "\r\n\r\n"
  49. + "evalJSON: " + jsonObject + " ,typeof " + typeof(jsonObject) + "\r\n\r\n"
  50. + "name= " + name + " , version= " + version );
  51.  
  52. </script>
  53. </head>
  54.  
  55. <body>
  56. </body>
  57. </html>

http://rogerfederer.iteye.com/blog/1798024

javascript中字符串格式json如何转化成json对象的更多相关文章

  1. javascript中字符串格式转化成json对象记录

    什么是JSON JSON(JavaScript Object Notation)是一种优美的JavaScript对象创建方法.JSON也是一种轻量级数据交换格式.JSON非常易于人阅读与编写,同时利于 ...

  2. cocos2d JS 在 JavaScript 中,怎样把一个对象转化成 JSON 字符串?

    为什么今天要做这样子的操作,原因很简单,因为cocos JS 的本地缓存储存不了对象,所以当我通过本地缓存的 key和value来取值的时候就取不出来来,json的消息数据是一个对象来的,然而在做牌局 ...

  3. javascript中字符串常用操作整理

    javascript中字符串常用操作整理 字符串的操作在js中非常频繁,也非常重要.以往看完书之后都能记得非常清楚,但稍微隔一段时间不用,便会忘得差不多,记性不好是硬伤啊...今天就对字符串的一些常用 ...

  4. JavaScript中字符串的match与replace方法

    1.match方法 match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配. match()方法的返回值为:存放匹配结果的数组. 2.replace方法 replace() 方 ...

  5. JavaScript中字符串分割函数split用法实例

    这篇文章主要介绍了JavaScript中字符串分割函数split用法,实例分析了javascript中split函数操作字符串的技巧,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了JavaSc ...

  6. JavaScript中字符串转Json方法小记

    例如: JSON字符串:var str1 = '{ "name": "cxh", "sex": "man" }'; JS ...

  7. JavaScript中字符串的方法:charAt()、charCodeAt()、indexOf()、lastIndexOf()、substr()、slice()、substring()、search()、replace()、split()、concat()、toLowerCase()、toUpperCase()

    1.字符创的创建: //1.通过new 来创建 var str = String("javascript"); //2.3.直接使用字面量进行创建 var str='html5'; ...

  8. Javascript中的Array(数组) 、{}(映射) 与JSON解析

    做网页总会使用javascript,使用javascript总会使用JSON.最近用到一下,就写写. 下面是总结: 1.将javascript中的Array和{}转化为json字符串可以使用json2 ...

  9. JavaScript中字符串去掉特殊字符和转义字符

    <pre name="code" class="javascript">/*** * 去掉字符串中的特殊字符 */ var excludeSpeci ...

随机推荐

  1. 昂贵的聘礼---poj1062(最短路)

    题目链接:http://poj.org/problem?id=1062 题意很清楚: 可以虚拟一个起点0,由于存在等级关系,所以可以枚举等级,然后把各种关系建立边,然后计算0到1的距离即可,去最小值即 ...

  2. java发展道路

    1.

  3. css中的zoom的使用

    css中的zoom的使用  zoom : normal | number  normal : 默认值.使用对象的实际尺寸  number : 百分数 | 无符号浮点实数.浮点实数值为1.0或百分数为1 ...

  4. LeetCode Perfect Squares

    原题链接在这里:https://leetcode.com/problems/perfect-squares/ 题目: Given a positive integer n, find the leas ...

  5. A股市场各行业龙头股一览表

    A股市场各行业龙头股一览表 一.指标股: 工商银行.中国银行.中国石化.中国国航.宝钢股份. 中国神华.建设银行.招商银行.华能国际.中国联通. 长江电力.中国人寿.中国石油 二.金融: 招商银行.浦 ...

  6. XtraBackup2.3.3安装配置使用(innobakupex)

    通过使用percona公司的xtrabackup备份还原数据库,并完成搭建mysql主从数据库. 一.XtraBackup下载安装部分. 1.安装依赖软件. [root@localhost ~]# y ...

  7. Sersync实现触发式文件同步 替代inotify和rsync

    Sersync实现触发式文件同步 替代inotify和rsync Pyinotify是一个Python模块,用来监测文件系统的变化. Pyinotify依赖于Linux内核的功能—inotify(内核 ...

  8. 如何激活一个window/dialog && 不能直接对Dialog Box使用SetFocus

    问题,症状: 程序的主窗口CMainWnd创建了一个modal dialog,希望这个dialog能接收WM_KEYDOWN消息,但是需要点一下这个dialog窗口它才能接收到(我嫌麻烦),而且我发现 ...

  9. CNContact对通讯录的基本使用(第二篇)

    /** * 注意:iOS9才有能使用 * 首先在工程里导入ContactsUI.framework和Contacts.framework两个框架 * * * 源代码的链接地址 * 链接: http:/ ...

  10. 用于sql server启动的账户

    用于启动和运行 SQL Server 的启动帐户可以是域用户帐户.本地用户帐户.托管服务帐户.虚拟帐户或内置系统帐户. 若要启动和运行 SQL Server 中的每项服务,这些服务都必须有一个在安装过 ...