Вместо того, чтобы переходить от строки json и использовать $ .parseJSON, мне нужно взять свой объект и сохранить его в переменной как строку, представляющую json.
(Библиотека, с которой я имею дело, ожидает искаженного типа json, поэтому мне нужно повозиться с ним, чтобы заставить его работать.)
Как лучше всего это сделать?
javascript
jquery
json
Инкогнито
источник
источник
Ответы:
Изменить: вы должны использовать библиотеку 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/
источник
undefined
, функции (которые не являются допустимыми значениями JSON), логические объекты (напримерnew Boolean(true);
) илиNaN
которые следует заменить withnull
, etc ... также он не поддерживает дополнительные необязательные аргументы,replacer
функцию иspaces
число для отступа, которые полностью описаны в стандарте.JSON.stringify({})
и посмотрите, получится ли у вас"{}"
без необходимости включать приведенный выше код. Вы даже можете передать параметры, чтобы отфильтровать ключи или сделать красивую печать, например, поставитьJSON.stringify({a:1,b:2}, null, 2)
новую строку и 2 пробела перед каждой клавишей.я использую
что дает мне строку.
источник
В
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 :
источник
Лучший способ, который я нашел, - использовать jQuery JSON.
источник
Вы можете преобразовать JSON в объект, а затем создать искаженный JSON из объекта ajavscript. Возможно, это не лучшая производительность.
В противном случае, если вам нужно внести очень небольшие изменения в строку, просто рассматривайте ее как строку и изменяйте ее с помощью стандартного javascript.
источник