代码之家  ›  专栏  ›  技术社区  ›  Incognito

jquery json到string?

  •  79
  • Incognito  · 技术社区  · 14 年前

    我不需要从JSON字符串开始使用$.ParseJSON,而是需要将我的对象作为代表JSON的字符串存储在变量中。

    (我正在处理的一个库需要一个格式错误的JSON类型,所以我需要把它弄得乱七八糟才能使它正常工作。)

    最好的方法是什么?

    5 回复  |  直到 9 年前
        1
  •  84
  •   Daniel R    12 年前

    编辑: 您应该使用Douglas Crockford的json2.js库,而不是实现下面的代码。它提供了一些额外的功能和更好/更旧的浏览器支持。

    从以下位置获取json2.js文件: https://github.com/douglascrockford/JSON-js


    // implement JSON.stringify serialization
    JSON.stringify = JSON.stringify || function (obj) {
        var t = typeof (obj);
        if (t != "object" || obj === null) {
            // simple data type
            if (t == "string") obj = '"'+obj+'"';
            return String(obj);
        }
        else {
            // recurse array or object
            var n, v, json = [], arr = (obj && obj.constructor == Array);
            for (n in obj) {
                v = obj[n]; t = typeof(v);
                if (t == "string") v = '"'+v+'"';
                else if (t == "object" && v !== null) v = JSON.stringify(v);
                json.push((arr ? "" : '"' + n + '":') + String(v));
            }
            return (arr ? "[" : "{") + String(json) + (arr ? "]" : "}");
        }
    };
    
    var tmp = {one: 1, two: "2"};
    JSON.stringify(tmp); // '{"one":1,"two":"2"}'
    

    代码来自: http://www.sitepoint.com/blogs/2009/08/19/javascript-json-serialization/

        2
  •  38
  •   Michael Gaskill Surya    9 年前

    我用

    $.param(jsonObj)
    

    这让我如鱼得水。

        3
  •  35
  •   AlexChaffee    13 年前

    大多数浏览器都有本机 JSON 反对这些天,其中包括 parse stringify 方法。所以尝试一下 JSON.stringify({}) 看看你能不能 "{}" . 您甚至可以通过传入参数来筛选出密钥或进行漂亮的打印,例如 JSON.stringify({a:1,b:2}, null, 2) 在每个键前面放一个换行符和两个空格。

    JSON.stringify({a:1,b:2}, null, 2)
    

    给予

    "{\n  \"a\": 1,\n  \"b\": 2\n}"
    

    打印为

    {
      "a": 1,
      "b": 2
    }
    

    至于你的问题的一部分,使用第二个参数。从 http://www.javascriptkit.com/jsref/json.shtml :

    replacer参数可以是函数或数组 字符串/数字。它逐步通过JSON对象中的每个成员 让您决定每个成员应该更改为什么值。作为一个 它可以返回的函数:

    • 数字、字符串或布尔值,用返回的值替换属性的原始值。
    • 对象,然后将其序列化并返回。不允许使用对象方法或函数,而是将其移除。
    • 空,这将导致删除属性。

    作为数组,其内部定义的值与 JSON对象内部的属性,当 转换为JSON对象。

        4
  •  10
  •   David Reynolds    13 年前

    我找到的最好方法是 jQuery JSON

        5
  •  0
  •   cofiem    14 年前

    您可以将JSON解析为一个对象,然后从Ajavscript对象创建格式错误的JSON。这可能不是最好的性能,透。

    否则,如果您只需要对字符串进行非常小的更改,只需将其视为字符串,并使用标准的JavaScript将其管理。