js转换

1.json字符串转json 对象:

$.parseJSON( jsonstr ); //jquery.parseJSON(jsonstr),可以将json字符串转换成json对象


JSON.parse(jsonstr); //可以将json字符串转换成json对象


var obj = eval('(' + str + ')');//可以将json字符串转换成json对象,注意需要在json字符外包裹一对小括号 

注:ie8(兼容模式),ie7和ie6也可以使用eval()将字符串转为JSON对象,但不推荐这些方式,这种方式不安全eval会执行json串中的表达式。


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


json对象读取方式:Alert(obj.name);

2.json对象转json字符串:

JSON.stringify(jsonobj); //可以将json对象转换成json对符串

注:ie8(兼容模式),ie7和ie6没有JSON对象,推荐采用JSON官方的方式,引入json.js。

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

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


3.json字符串转数组:

var t2="[{name:'zhangsan',age:'24'},{name:'lisi',age:'30'},{name:'wangwu',age:'16'},{name:'tianqi',age:'7'}] ";  

var myobj=eval(t2);  

for(var i=0;i<myobj.length;i++){  

   alert(myobj[i].name);  

   alert(myobj[i].age);  

}  


var str = '1,2,3,4,巴德,merge';
var arr = str.split(',');
console.log(arr);     // ["1", "2", "3", "4", "巴德", "merge"]   数组
console.log(arr[4]);  // 巴德


4.数组转json字符串:

其实核心的方法就是:JSON.stringify()

参数,不论是数组,还是对象,直接传入,返回的就是json字符串。

var arr = [1,2,3,4,'巴德','merge'];
var str = arr.join(',');
console.log(str); // 1,2,3,4,巴德,merge


5.json对象转数组:

for(var i=0;i<myobj.length;i++){  

   alert(myobj[i].name);  

   alert(myobj[i].age);  

}  



6.数组转json对象:

var  array = [[ "标题1" , "12:00" , "type" ],[ "标题2" , "12:10" , "type" ],[ "标题3" , "12:20" , "type" ],[ "标题4" , "12:30" , "type" ]];
document.write(array);
 
 
Array.prototype.format= function (){
     if (! this .length)     return  null ;
     var  i = 0,
         len =  this .length,
         arr = [];
     for (;i<len;i++){
         arr.push({ "标题" : this [i][0], "time" : this [i][1], "类别" : this [i][2]});
     }
     return  JSON.stringify(arr);
};


7.JSON 语法规则

JSON 语法是 JavaScript 对象表示法语法的子集。

  • 数据在名称/值对中
  • 数据由逗号分隔
  • 花括号保存对象
  • 方括号保存数组
  • 对象格式大括号开始{}

  • 对象数组格式是以[{}]这种格式开始的。

按照这个规则可以作以下理解: 
1.数组用“[]”创建,对象用“{}”创建,并且使用Json基本都是用[]或者{}创建的数组或对象,否则一个普通的字符串是没有意义的; 
2.无论是数组还是对象,之间的元素都用“,”隔开; 
3.对象内部,(属性的)名称和值用“:”隔开,并且必须要用“:”隔开,不可单独存在属性名或者值; 
4.对象和数组可以互相嵌套,即数组中的一个元素可以是一个对象也可以是一个数组,同理对象中的一个属性的值可以是一个对象也可以是一个数组。 


例子:

JSON字符串:
var jsonstr  = '{ "name": "cxh", "sex": "man" }'; 
JSON对象:
var jsonobj = { "name": "cxh", "sex": "man" };

JSON数组:

var jsonarr ={  

"employees": [  

"firstName":"John" , "lastName":"Doe" },  

"firstName":"Anna" , "lastName":"Smith" },  

"firstName":"Peter" , "lastName":"Jones" }  

]  }  

对象数组:

var employees = [  

"firstName":"Bill" , "lastName":"Gates" },  

"firstName":"George" , "lastName":"Bush" },  

"firstName":"Thomas" , "lastName""Carter" }  

];  

alert(employees[0].lastName); // 方式一  

alert(employees[0]["lastName"]); // 方式二  



数组

var arr=['']

//将json字符串转换成json对象

var t="{'firstName': 'cyra', 'lastName': 'richardson', 'address': { 'streetAddress': '1 Microsoft way', 'city': 'Redmond', 'state': 'WA', 'postalCode': 98052 },'phoneNumbers': [ '425-777-7777','206-777-7777' ] }"

var jsonobj=eval('('+t+')'); 

alert(jsonobj.firstName);  

alert(jsonobj.lastName);


//将json字符串转换为数组


    var  t2 = "[{name:'zhangsan',age:'24'},{name:'lisi',age:'30'},{name:'wangwu',age:'16'},{name:'tianqi',age:'7'}] " ;  

    var myobj=eval(t2);  

    for(var i=0;i<myobj.length;i++){

    alert(myobj[i].name);

    alert(myobj[i].age);  


    //将json字符串转换为数组

    var t3="[['社旗县国税局桥头税务','社旗县国税局桥头税务所','社旗县城郊乡长江路西段']]"

    var obj = eval(t3);

    //通过eval() 函数可以将JSON字符串转化为对象

    for(var i=0;i<obj.length;i++){  

    for(var j=0;j<obj[i].length;j++){  

    alert(obj[i][j]);

     }

    }


     response = (

                "[{ name: 'Joe', age: '30', gender: 'M'},{ name: 'Chandler', age: '32', gender: 'M'},{ name: 'Rose', age: '31', gender: 'M'}]"  //字符串形式

      );

      var response1 ="({ name: 'Vicson', age: '30', gender: 'M'})";   //字符串形式,这里的小括号不能少

      json = eval(response);

      json1 = eval(response1); 

      alert(json[0].name + "," + json[1].age + "," +  json[2].gender);

      alert(json1.name);


    //对象字量量格式
    var obj = { name: "姓名", sex: 25 };
    //JSON对象格式
    var json = { "name""姓名""sex""25" };
    //JSON字符串
    var json_string = '{"name":"姓名","sex":"25"}';
    //测试
    document.write(json_string.name) //结果:undefined,说明:不能访问JSON字符串里面的数据         
    var string_to_json = JSON.parse(json_string);
    document.write(string_to_json.name) //结果:姓名,说明:把JSON字符串转换为JSON对象格式后可以访问数据 
    var json_to_string = JSON.stringify(json);
    document.write(json_to_string); //结果:{"name":"姓名","sex":"25"} ,说明:把JSON对象转换成了字符串


    var str = '1,2,3,4,巴德,merge';
    var arr = str.split(',');
    var strify = JSON.stringify(arr);
    console.log(arr);       // ["1", "2", "3", "4", "巴德", "merge"]   数组
    console.log(arr[4]);    // 巴德
    console.log(strify);    // ["1", "2", "3", "4", "巴德", "merge"]   字符串
    
    var arrParse = JSON.parse(strify);
    console.log(arrParse);  // ["1", "2", "3", "4", "巴德", "merge"]   数组





    • 0
      点赞
    • 0
      收藏
      觉得还不错? 一键收藏
    • 0
      评论
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值