Jquery json to string?

Вместо перехода из строки json и использования $.parseJSON мне нужно взять мой объект и сохранить его в переменной как строку, представляющую json.

(Библиотека, с которой я имею дело, ожидает неправильного типа json, поэтому мне нужно возиться с ней, чтобы заставить ее работать.)

Какой лучший способ сделать это?

Ответ 1

Изменить:. Вы должны использовать библиотеку 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

Я использую

$.param(jsonObj)

который получает мне строку.

Ответ 3

В настоящее время большинство браузеров имеют собственный JSON объект, который включает методы parse и stringify. Поэтому просто попробуйте JSON.stringify({}) и посмотрите, получаете ли вы "{}". Вы можете даже передавать параметры, чтобы отфильтровать ключи или сделать красивую печать, например. JSON.stringify({a:1,b:2}, null, 2) помещает новую строку и 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 до позвольте вам решить, какое значение должен внести каждый член. Как функция, которую он может вернуть:

  • Число, строка или логическое значение, которое заменяет исходное значение свойства возвращаемым.
  • Затем возвращается объект, который затем сериализуется. Объектные методы или функции не допускаются и удаляются.
  • Null, что приводит к удалению свойства.

В качестве массива значения, определенные внутри него, соответствуют именам свойства внутри объекта JSON, которые следует сохранить, когда преобразованный в объект JSON.

Ответ 4

Лучший способ, который я нашел, - использовать jQuery JSON

Ответ 5

Вы можете разобрать JSON для объекта, а затем создать свой неверный JSON из объекта ajavscript. Это может быть не лучший результат, т. К.

В противном случае, если вам нужно внести очень небольшие изменения в строку, просто обработайте ее как строку и отмените ее с помощью стандартного javascript.