jquery json to string?

后端 未结 5 1030
伪装坚强ぢ
伪装坚强ぢ 2020-11-27 13:58

Instead of going from a json string and using $.parseJSON, I need to take my object and store it in a variable as string representing json.

(A library I\'m dealing w

相关标签:
5条回答
  • 2020-11-27 14:37

    Most browsers have a native JSON object these days, which includes parse and stringify methods. So just try JSON.stringify({}) and see if you get "{}". You can even pass in parameters to filter out keys or to do pretty-printing, e.g. JSON.stringify({a:1,b:2}, null, 2) puts a newline and 2 spaces in front of each key.

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

    gives

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

    which prints as

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

    As for the messing around part of your question, use the second parameter. From http://www.javascriptkit.com/jsref/json.shtml :

    The replacer parameter can either be a function or an array of String/Numbers. It steps through each member within the JSON object to let you decide what value each member should be changed to. As a function it can return:

    • A number, string, or Boolean, which replaces the property's original value with the returned one.
    • An object, which is serialized then returned. Object methods or functions are not allowed, and are removed instead.
    • Null, which causes the property to be removed.

    As an array, the values defined inside it corresponds to the names of the properties inside the JSON object that should be retained when converted into a JSON object.

    0 讨论(0)
  • 2020-11-27 14:40

    The best way I have found is to use jQuery JSON

    0 讨论(0)
  • 2020-11-27 14:43

    I use

    $.param(jsonObj)
    

    which gets me the string.

    0 讨论(0)
  • 2020-11-27 14:45

    You could parse the JSON to an object, then create your malformed JSON from the ajavscript object. This may not be the best performance-wise, tho.

    Otherwise, if you only need to make very small changes to the string, just treat it as a string, and mangle it using standard javascript.

    0 讨论(0)
  • 2020-11-27 14:49

    Edit: You should use the json2.js library from Douglas Crockford instead of implementing the code below. It provides some extra features and better/older browser support.

    Grab the json2.js file from: 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"}'
    

    Code from: http://www.sitepoint.com/blogs/2009/08/19/javascript-json-serialization/

    0 讨论(0)
提交回复
热议问题