JSON(二)——JavaScript中js对象与JSON格式字符串的相互转换

首先我们来看一下js中JSON格式的字符串

var JSONStr1 = "{\"name\" : \"张三\"}";

注意以下的写法不是js中JSON格式的字符串,它只是一个js的字符串。

var JSONStr2 = "{‘name‘ : ‘张三‘}";

我们看JSON语法中对于字符串的定义:是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。

下面我们来看一下在js中怎么把JSON格式的字符串转换成一个JS对象。(

var jsObj3 = eval("(" + JSONStr1 + ")");
var jsObj4 = JSON.parse(JSONStr1);

推荐使用第二种方式具体原因请参看:http://www.json.org.cn/resource/json-in-javascript.htm

  此外提一句使用这两种方式转换后的js对象,应该是“一个符合JSON数据格式的js对象”,也就是说它的属性是带着引号的,这只是我的一种猜测,因为如果JSON格式的字符串如下表示:

var JSONStr1 = "{\"f[name]\" : \"张三\"}";

  那么转换后的JS对象的属性必定要加上引号,因为js对象的属性不加引号只能使用字母,数字,下划线和$符号表示,使用其它符号属性就要加上引号了,所以说JS对象字面量表示法中属性加上引号是不会错的。另外如果JSON格式的字符串如上所示,那么转换后的js对象对f[name]取值就不能使用 jsObj4.f[name] 要用 jsObj4[‘f[name]‘] ,因为有特殊字符,这点要注意了。对于我的猜测,读者要有异议,可以提给我。

我们再来看看在js中js对象与JSON格式字符串的转换。下面我准备了几组js对象加以说明:

<input type="button" value="测试按钮1" onclick="testJson();"/>
<script type="text/javascript">
    //(1) 这是一个js对象
    var jsObj1 = {
        name : "张三"
    }
    //(2)这是一个内部带有方法js对象。
    var jsObj2 = {
        name : "张三",
        func : function(){
            alert("hello");
        }
    }
    //(3)这是一个符合JSON数据格式的js对象
    var jsonObj = {
        "name" : "张三",
        "age" : 10,
        "remark" : {"high" :170,"address" : "beijingshi"}
    }
    // js数组对象
    var jsArray = [
        {name : "张三"},
        {"age" : 10}
    ]

    function testJson(){

        var JSONstr1 = JSON.stringify(jsObj1);
        var JSONstr2 = JSON.stringify(jsObj2);
        var JSONstr3 = JSON.stringify(jsonObj);
        var JSONstr4 = JSON.stringify(jsArray);
        alert(JSONstr1);
        alert(JSONstr2);
        alert(JSONstr3);
        alert(JSONstr4);

    }

看一下弹框的内容:

(1)                (2)                                       (3)                       (4)

                    

其中 (1)、(3)、(4)的执行结果说明,JSON解析器的stringify()函数对于js对象是fou符合JSON格式是不加限定,都可以把js对象转换成JSON格式字符串。

(2)的执行结果说明,js对象中如果没有JSON表示的值(比如函数和undefined)将会被排除。

参考文章:

    http://www.json.org.cn/resource/json-in-javascript.htm

  最后说一点,我们作为程序员,研究问题还是要仔细深入一点的。当你对原理了解的有够透彻,开发起来也就得心应手了,很多开发中的问题和疑惑也就迎刃而解了,而且在面对其他问题的时候也可做到触类旁通。当然在开发中没有太多的时间让你去研究原理,开发中要以实现功能为前提,可等项目上线的后,你有大把的时间或者空余的时间,你大可去刨根问底,深入的去研究一项技术,为觉得这对一名程序员的成长是很重要的事情。

  

  

时间: 2024-10-08 02:02:40

JSON(二)——JavaScript中js对象与JSON格式字符串的相互转换的相关文章

【JS对象、JSON字符串】之间的相互转换

在Firefox,chrome,opera,safari,ie9,ie8等浏览器直接可以用JSON对象的stringify()和parse()方法. 1.JSON.stringify(obj)将JS对象转为JSON字符串. //JS对象 var obj={"name":"tom","sex":"男","age":"24"}; //JS对象转化为JSON字符串 var jsonString

javaScript中eval()方法转换json对象

原文:javaScript中eval()方法转换json对象 <script language="javascript"> var user = '{name:"张三",age:23,'+ 'address:{city:"青岛",zip:"266071"},'+ 'email:"[email protected]",'+ 'showInfo:function(){'+ 'document.wri

JSON 在JavaScript 中的应用及自己的理解

[对象和json]JSON:JavaScript 对象表示法(JavaScript Object Notation).JSON 是存储和交换文本信息的语法.类似 XML.JSON是一种数据格式,不是一种编程语言.在json中没有注释.json代表了一个数据传输格式.一.json的语法可以表示以下三种类型的值:(数据结构)(1)简单值:是最简单的数据形式,可以是字符串.数值.布尔值.null.json不支持javascript中的特殊值undefined.注意:json中的字符串必须使用双引号括起

JavaScript中的Cookie 和 Json的使用

JavaScript中的Cookie 和 Json的使用 JSON JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.采用的是完全独立于编程语言的文本格式来存储和表示数据.于2001年开始广泛的推广使用,2005-2006正式的称为主流的数据格式.(JSON是一种高效的数据存储格式,JSON的结构和对象一致,也是以键值对的形式来进行存储的:但是JSON是字符型数据) 功能:JSON主要用来进行数据的存储和文本信息的交换,类似于XML.但是却比XML更加的

js对象与json格式的转换

目前的项目数据交互几乎都用JQuery,所以处理流程是:前端页面数据->JS对象->jQuery提交->python处理,另外一种就是倒过来.python肯定不能直接处理JS对象数据,所以要把JS对象转换成为python能处理的一种数据格式(通常是字典dict),同样,python取数据反馈到前端也要把字典数据转换成JS能处理的对象,这个中间转换数据格式通常就是JSON. 一.JS对象转换成为JSON 流程:读取前端页面数据,组装成为JS对象,并通过jQuery的$.post()方法传递

node.js JS对象和JSON字符串之间的转换

JSON.stringify(obj)将JS对象转为字符串. var json = { aa: ['sdddssd'],   bb: [ '892394829342394792399', '23894723984729374932874' ],   cc: ['11111111111111'] } => var string = JSON.stringify(json) string: {"aa":["sdddssd"],"bb":[&qu

Json对象、 Json纯文本 和js对象的区别:

Json纯文本 和js对象的区别: Json对象:var JSONObject= { "name":"John Johnson", "street":"Oslo West 555", "age":33, "phone":"555 1234567"}; typeof(JSONObject)结果是:"object" Json纯文本: 是具有JSON数据

javascript中Date对象的应用——简易日历的实现

× 目录 [1]效果 [2]HTML [3]CSS[4]JS 前面的话 简易日历作为javascript中Date对象的常见应用,用途较广泛.本文将详细说明简易日历的实现思路 效果演示 HTML说明 使用type=number的两个input分别作为年和月的输入控件,这样在高级浏览器下自带调节按钮 按照周日到周一的顺序进行星期的排列 <div class="box"> <header class='control'> <input id="con

javascript中Date对象的应用

前面的话 简易日历作为javascript中Date对象的常见应用,用途较广泛.本文将详细说明简易日历的实现思路 效果演示 HTML说明 使用type=number的两个input分别作为年和月的输入控件,这样在高级浏览器下自带调节按钮 按照周日到周一的顺序进行星期的排列 <div class="box"> <header class='control'> <input id="conYear" class="con-in&q