jquery、js中String或Object与json、json数组的互转

**

字符串转JSON

**
第一种方式:
使用js函数eval();
dataJson=eval(dataJson);是错误的转换方式。
正确的转换方式需要加(): testJson = eval(“(” + dataJson+ “)”);

eval()的速度非常快,但是他可以编译以及执行任何javaScript程序,所以会存在安全问题。在使用eval()。来源必须是值得信赖的。需要使用更安全的json解析器。在服务器不严格的编码在json或者如果不严格验证的输入,就有可能提供无效的json或者载有危险的脚本,在eval()中执行脚本,释放恶意代码。

function ConvertStr2JsonFor() { 
          //var dataJson= "{ name: '小强', age: 16 }";(支持) 
          //var dataJson= "{ 'name': '小强', 'age': 16 }";(支持) 
          var dataJson= '{ "name": "小强", "age": 16 }'; 
          //testJson=eval(dataJson);//错误的转换方式 
          dataJson= eval("(" + dataJson+ ")"); 
          alert(dataJson.name); 
    }

第二种方式
使用jquery.parseJSON()方法对json的格式要求比较高,必须符合json格式,如属性都需用引号引起来

function ConvertToJsonForJq() {  
          var dataJson= '{ "name": "小强", "age": 16 }';  
          //不知道  
          //'{ name: "小强", age: 16 }' (name 没有使用双引号包裹)  
          //"{ 'name': "小强", 'age': 16 }"(name使用单引号)  
          dataJson= $.parseJSON(dataJson);  
          alert(dataJson.name);  
      }  

第三种方式:
new Function形式,比较怪异哦。如下
复制代码 代码如下:

function strToJson(str){
    var json = (new Function("return " + str))();
    return json;
} 

JS对象和JSON互转

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

JS对象与JSON数组互转

function obj2Array(){
    var linkStr = [];//声明数组
    var data1 = getDataToFoce();
    var linkJson;
    //如果data1为非数组,则不用遍历,直接使用push方法即可
    $.each(data1, function(i, value) {
        linkJson = '{"source":(i-1),"target":i}';
        linkJson = eval("(" + linkJson + ")");
        data1.push(linkJson);//使用push方法连接数组
    }); 
    return data1;
}

你可能感兴趣的:(json数据)