我用于其他浏览器,比如火狐啥的,用 JSON.stringify() 方法完全能转,但是在 ie 浏览器中会报错,JSON is undefined
从而无法完成转化,在网上查的 jQuery.stringifyJSON() 方法也不能用 ,特来此处寻求大神解决一下如何在 js 中将json对象转化成json字符串

解决方案 »

  1.   

    下载json.js这个JS文件,然后就可以调用obj.toJSONString()得到了
      

  2.   


    jquery中是使用下面的方法进行转换的。对于待转换的内容格式是有严格要求的。合格的就可以转换呀。应该不会像Lz说的转换不了。当前前提是要加载jQuery库
    var _json=$.parseJSON('{"a":"1","b":"2"}');
    alert(_json.a);
      

  3.   

    老大,我是有对象,需要转化为json字符串
      

  4.   

    现在网上都是要用 JSON.stringify() ,害人不浅啊
      

  5.   

    function jsonToString(json){
        var a='',tpl='"{0}":"{1}"';
        for(var name in json){
            var b=tpl.replace('{0}',name).replace('{1}',json[name]);
            a+=a.length==0?b:','+b;
        }
        return a;
    }
    var _json={"a":"1","b":"2"};
    alert(jsonToString(_json))是说类似于这个样子??
      

  6.   

    我现在用
    function jsonArryToString(json) {
                var a = '', tpl = '"{0}":"{1}"';
                for (var i=0;i<json.length;i++) {
                    for (var name in json[i]) {
                        var b = tpl.replace('{0}', name).replace('{1}', json[i][name]);
                        a += a.length == 0 ? b : ',' + b;
                    }
                }
                
                return '[{' + a + '}]';
            }
            
            var _json = { "a": "1", "b": "2" };
            $(function () {
                var a = '[{"OrderSalesProductID":1,"ProductID":"花生","ProductNo":"0001","OrderSalesType":"1","OrderSalesID":0,"Unit":"斤","UnitPrice":12.5,"Price":7.5,"Discount":0.9,"Quantity":10,"TotalPrice":115,"Re":"无","IsDelete":false,"CreateUserID":0,"CreateDate":null,"ModifyUserID":null,"ModifyDate":null,"__status":"update"}]';
                var b = $.parseJSON(a);
                var c = jsonArryToString(b);
                var d = JSON.stringify(b);
                alert("ss");
                //            $.post("1.ashx", { "action": "sss" }, function (data, s1) {
                //                if (s1 == "success") {
                //                    alert(c);
                //                }
                //            })
            })这样写的
    原来是
    $(function () {
                var a = '[{"OrderSalesProductID":1,"ProductID":"花生","ProductNo":"0001","OrderSalesType":"1","OrderSalesID":0,"Unit":"斤","UnitPrice":12.5,"Price":7.5,"Discount":0.9,"Quantity":10,"TotalPrice":115,"Re":"无","IsDelete":false,"CreateUserID":0,"CreateDate":null,"ModifyUserID":null,"ModifyDate":null,"__status":"update"}]';
                var b = $.parseJSON(a);
                var c = b.toJSONString();
                $.post("1.ashx", { "action": "sss" }, function (data, s1) {
                   if (s1 == "success") {
                     alert(c);
                   }
                })
    就会提示jquery脚本错误很蛋疼啊,原来用JSON.stringify()在火狐里就能用的,但是兼容性不好,拿到这个js一引用,就都报错了,页面都没办法运行了
      

  7.   

    json.js好像和jquery有冲突,下午有空帮你检查下
      

  8.   


    根据你自己的需求按上面的方法写那么一个函数能达到效果就完了。为什么一定要纠结于使用json.js呢?你上面用的方法与我简单的写的那个唯一不同的就是,你传入的其实是一个Array而已那你自己写这么两个函数,一个处理Array的转化,一个处理直接就是json类型的处理不就是了。或者统一到一个函数中。先判断是否为Array,是就使用Array遍历后再转换就是了。如果不是Array,就直接转换解决问题为首要目的,再说,自己写这么一个函数又不麻烦。没必要那么纠结
      

  9.   

    找到了,循环引用的问题,因为你的参数是JSON对象,jq调用了param方法序列化json对象为键值对时遍历json对象,而json.js对所有对象扩展了toJSONString方法,导致序列化为键值对是循环调用了toJSONString修改json.js中的代码就行了
    找到
     switch (typeof v) {
                        case 'object':这句,大概在150~152行之间如果没修改过的话,增加一个是否自身调用的判断即可
     switch (typeof v) {
                        case 'object': if (v == this) continue;//增加是否自身调用,是则继续
    也可以重新下载这个文件json.js,修改过了
      

  10.   

    thank you very much,你真是个好人