Преобразовать объект JS в строку JSON - PullRequest
1140 голосов
/ 12 ноября 2010

Если я определил объект в JS с помощью:

var j={"name":"binchen"};

Как я могу преобразовать объект в JSON? Выходная строка должна быть:

'{"name":"binchen"}'

Ответы [ 18 ]

1780 голосов
/ 12 ноября 2010

Все современные браузеры имеют встроенную поддержку JSON. Так что, если вы не имеете дело с доисторическими браузерами, такими как IE6 / 7, вы можете сделать это так же просто, как это:

var j={"name":"binchen"};
JSON.stringify(j); // '{"name":"binchen"}'
101 голосов
/ 12 ноября 2010

С JSON.stringify(), найденным в json2.js или родным в большинстве современных браузеров.

   JSON.stringify(value, replacer, space)
        value       any JavaScript value, usually an object or array.

       replacer    an optional parameter that determines how object
                    values are stringified for objects. It can be a
                    function or an array of strings.

       space       an optional parameter that specifies the indentation
                    of nested structures. If it is omitted, the text will
                    be packed without extra whitespace. If it is a number,
                    it will specify the number of spaces to indent at each
                    level. If it is a string (such as '\t' or ' '),
                    it contains the characters used to indent at each level.

       This method produces a JSON text from a JavaScript value.
29 голосов
/ 12 ноября 2010

Проверьте обновленный / лучший способ:

Обновление 17 мая 2008: добавлено небольшое дезинфицирующее средствометод toObject. Теперь toObject () не будет оценивать () строку, если обнаружит в ней вредоносный код. Для еще большей безопасности: не устанавливайте флаг includeFunctions в значение true.

Дуглас Крокфорд,Отец концепции JSON, написал один из первых строковых преобразователей для JavaScript.Позже Стив Йен из Trim Path написал хорошую улучшенную версию, которую я использовал в течение некоторого времени.Это мои изменения в версии Стива, которыми я хотел бы поделиться с вами.В основном они проистекают из моего желания сделать строковый преобразователь:

• handle and restore cyclical references  
• include the JavaScript code for functions/methods (as an option)  
• exclude object members from Object.prototype if needed.
18 голосов
/ 20 ноября 2015

Вы можете использовать метод JSON.stringify () для преобразования объекта JSON в строку.

var j={"name":"binchen"};
JSON.stringify(j)

Для обратного процесса вы можете использовать метод JSON.parse () для преобразования строки JSON в объект JSON.

9 голосов
/ 08 мая 2016

In angularJS

angular.toJson(obj, pretty);

obj: ввод для сериализации в JSON.

pretty (необязательно):
Если установлено значение true, вывод JSON будет содержать символы новой строки и пробелы,Если задано целое число, вывод JSON будет содержать столько пробелов на отступ.

(по умолчанию: 2)

8 голосов
/ 11 сентября 2015

Если вы используете AngularJS, фильтр 'json' должен сделать это:

<span>{{someObject | json}}</span>
7 голосов
/ 15 ноября 2016

JSON.stringify(j, null, 4) даст вам украшенный JSON на случай, если вам тоже понадобится украшение

Второй параметр - replacer.Его можно использовать в качестве фильтра, где вы можете отфильтровать определенные значения ключа при строковом преобразовании.Если установлено значение null, он вернет все пары значений ключа

7 голосов
/ 13 февраля 2017

JSON.stringify превращает объект Javascript в текст JSON и сохраняет этот текст JSON в строке.

Преобразование объекта в строку

JSON.parse превращает строку текста JSON в объект Javascript.

Преобразование Строка в Объект

var j={"name":"binchen"};

чтобы сделать его следующим JSON String, можно использовать.

JSON.stringify({"key":"value"});

JSON.stringify({"name":"binchen"});

Для получения дополнительной информации вы можете обратиться к этой ссылке ниже.

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify

5 голосов
/ 13 сентября 2016

У меня были проблемы с нехваткой памяти stringify, и другие решения, похоже, не работали (по крайней мере, я не мог заставить их работать), когда я наткнулся на этот поток. Благодаря Rohit Kumar я просто перебираю свой очень большой объект JSON, чтобы предотвратить его падение

var j = MyObject;
var myObjectStringify = "{\"MyObject\":[";
var last = j.length
var count = 0;
for (x in j) {
    MyObjectStringify += JSON.stringify(j[x]);
    count++;
    if (count < last)
        MyObjectStringify += ",";
}
MyObjectStringify += "]}";

MyObjectStringify выдаст вам строковое представление (точно так же, как упоминалось в других случаях в этой теме), за исключением случаев, когда у вас большой объект, это также должно работать - просто убедитесь, что вы построили его в соответствии со своими потребностями - Мне нужно было имя, чем массив

5 голосов
/ 12 октября 2015

Один кастом, определенный для этого, пока мы не сделаем странный из метода stringify

var j={"name":"binchen","class":"awesome"};
var dq='"';
var json="{";
var last=Object.keys(j).length;
var count=0;
for(x in j)
{
json += dq+x+dq+":"+dq+j[x]+dq;
count++;
if(count<last)
   json +=",";
}
json+="}";
document.write(json);

OUTPUT

{"name":"binchen","class":"awesome"}

LIVE http://jsfiddle.net/mailmerohit5/y78zum6v/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...