zoukankan      html  css  js  c++  java
  • 将json转成对象和将对象转成json

    一、原生js

    一、使用json2.js库来转换

      下载地址:https://github.com/douglascrockford/JSON-js

     

    json2使用方法:

    1、对象转成json:stringify

    1 var jsonObj = { id: '01', name: 'Tom' };
    2 JSON.stringify(jsonObj);

    2、json转成对象

    1 var jsonString = "{ id: '01', name: 'Tom' }";
    2 JSON.parse(jsonString);

    数据传输过程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键。例如:

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

    JSON对象:var str2 = { "name": "cxh", "sex": "man" };


    一、JSON字符串转换为JSON对象

    要使用上面的str1,必须使用下面的方法先转化为JSON对象:

    //由JSON字符串转换为JSON对象

      var obj = eval('(' + str + ')');

    或者

      var obj = str.parseJSON(); //由JSON字符串转换为JSON对象

    或者

      var obj = JSON.parse(str); //由JSON字符串转换为JSON对象

    然后,就可以这样读取:

      Alert(obj.name);

      Alert(obj.sex);

      特别注意:如果obj本来就是一个JSON对象,那么使用eval()函数转换后(哪怕是多次转换)还是JSON对象,但是使用parseJSON()函数处理后会有问题(抛出语法异常)。



    二、可以使用JSON.stringify()或者全局方法JSON.stringify()将JSON对象转化为JSON字符串。

    例如:

      var last= JSON.stringify(obj);      obj.toJSONString(); //将JSON对象转化为JSON字符

    或者

      var last=JSON.stringify(obj); //将JSON对象转化为JSON字符

      alert(last);


    注意:
      上 面的几个方法中,除了eval()函数是js自带的之外,其他的几个方法都来自json.js包。新版本的 JSON 修改了 API,将 JSON.stringify() 和 JSON.parse() 两个方法都注入到了 Javascript 的内建对象里面,前者变成了 Object.toJSONString(),而后者变成了 String.parseJSON()。如果提示找不到toJSONString()和parseJSON()方法,则说明您的json包版本太低。

     1 <script> 
     2 //直接声明json数据结构 
     3 var myJSONObject = {"bindings": [ 
     4         {"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"}, 
     5         {"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"}, 
     6         {"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"} 
     7     ] 
     8 }; 
     9 
    10 //声明字符串,可对比一下json文本与我们正常文本的区别 
    11 var normalstring='[{persons:[{name:"jordan",sex:"m",age:"40"}, {name:"bryant",sex:"m",age:"28"}, {name:"McGrady",sex:"m",age:"27"} ]}]'; 
    12 var jsontext='[{"persons":[{"name":"jordan","sex":"m","age":"40"}, {"name":"bryant","sex":"m","age":"28"}, {"name":"McGrady","sex":"m","age":"27"} ]}]';
    13 
    14 //调用eval函数转换为json对象, 
    15 var myE = eval(normalstring); 
    16 document.writeln(myE '<br><br>'); 
    17 
    18 //将json对象转换为字符串 
    19 var text = JSON.stringify(myE); 
    20 
    21 //对比转换后的json文本与声明的文本区别 
    22 document.writeln('转换后的json文本:' text '<br><br>声明的json格式文本' jsontext '<br><br>声明的普通格式文本' normalstring '<br><br>');
    23 
    24 //当安全比较重要的时候使用JSON解析就好一些。JSON解析只会识别JSON文本并且它更安全,下面调用json的parse函数对文本数据转换生成json数据结构 
    25 var myData = JSON.parse(jsontext);
    26 document.writeln(myData '<br><br>');
    27 
    28 //下面是对json对象的增删查改操作
    29 
    30 //声明json对象
    31 var jsonObj2={persons:[{name:"jordan",sex:"m",age:"40"}, {name:"bryant",sex:"m",age:"28"}, {name:"McGrady",sex:"m",age:"27"} ]};
    32 
    33 var persons=jsonObj2.persons; 
    34 var str="";
    35 
    36 var person={name:"yaoMing",sex:"m",age:"26"}; 
    37 
    38 //以下为json对象的操作,去掉注释可以查看操作结果 
    39 //jsonObj2.persons.push(person);//数组最后加一条记录 
    40 //jsonObj2.persons.pop();//删除最后一项 
    41 //jsonObj2.persons.shift();//删除第一项 
    42 
    43 jsonObj2.persons.unshift(person);//数组最前面加一条记录 只要适合Javascript的方法都是可以用在JSON对象的数组中的!所以还有另外的方法splice( )进行crud操作! //删除 
    44 
    45 //jsonObj2.persons.splice(0,2);//开始位置,删除个数 
    46 
    47 //替换不删除 
    48 var self={name:"tom",sex:"m",age:"24"}; 
    49 var brother={name:"Mike",sex:"m",age:"29"}; 
    50 jsonObj2.persons.splice(1,0,self,brother,self);//开始位置,删除个数,插入对象 
    51 
    52 //替换并删除 
    53 //jsonObj2.persons.splice(0,1,self,brother);//开始位置,删除个数,插入对象
    54 
    55 for(var i=0;i<persons.length;i ){ var cur_person=persons[i]; str =cur_person.name "'sex is " cur_person.sex " and age is " cur_person.age "<br><br>"; } 
    56 document.writeln(str); 
    57 
    58 //转换为json文本 
    59 var myjsonobj =  JSON.stringify(jsonObj2); 
    60 document.writeln(myjsonobj); 
    61 </script>
  • 相关阅读:
    JOISC2020 题解
    Linux系统时钟与硬件时钟
    Excel Application操作指南
    WinCC 7.5 SP1安装方法
    关于WinCC V15.1使用ActiveX的ListView控件时添加失败问题
    WinCC 利用VBScript连接mysql数据库
    WPF中通过AForge实现USB摄像头拍照
    ESP32引脚参考
    C语言创建循环缓冲区(环形缓冲区)-- Circular Buffer(Ring Buffer)
    Android Studio汉化教程
  • 原文地址:https://www.cnblogs.com/couxiaozi1983/p/3526163.html
Copyright © 2011-2022 走看看