Преобразовать объект JS в строку JSON

1134

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

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

Как преобразовать объект в JSON? Строка вывода должна быть:

'{"name":"binchen"}'
  • 48
    JSON.stringify() - это метод, который вы ищете.
  • 6
    Всегда есть первый раз, когда ты должен изучить это.
Теги:
string
object

27 ответов

1614
Лучший ответ

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

var j={"name":"binchen"};
JSON.stringify(j); // '{"name":"binchen"}'
  • 5
    скачать этот скрипт для JSON.stringify(j); работать
  • 14
    Работаем также на nodejs !!!
Показать ещё 6 комментариев
100

С 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.
  • 6
    Для большей ясности: replacer является необязательным, поэтому, если вы все еще хотите использовать space arg, вы устанавливаете null для replacer . Если вы заинтересованы в использовании этой функции для красивой печати, я нашел этот ответ также полезным: stackoverflow.com/a/7220510/857209
27

Ознакомьтесь с обновленным/лучшим способом:

Обновление 17 мая 2008 г.: Малый дезинфицирующее средство добавлен в метод toObject. Теперь toObject() не будет eval() строка если он обнаруживает какой-либо вредоносный код в it.For еще больше безопасности: не устанавливайте флаг 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.
17

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

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

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

  • 0
    Спасибо за добавление обратного процесса.
14

Json Stringify может преобразовать ваш js-объект в json

 var x = {"name" : "name1"};
 JSON.stringify(x);
10
JSON.stringify({"key":"value"});
  • 0
    его работа спасибо
8

В угловом JS

angular.toJson(obj, pretty);

OBJ: Вход для сериализации в JSON.

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

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

  • 0
    это работает на угловых 2 тоже?
8

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

<span>{{someObject | json}}</span>
7

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

Преобразование - это Object to String

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

Преобразование - это String to Object

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

чтобы сделать возможным использование строки JSON.

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

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

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

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

7

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

  • 1
    что такое аргумент secend?
  • 0
    Второй параметр - заменитель. Его можно использовать в качестве фильтра, где вы можете отфильтровать определенные значения ключа при строковом преобразовании. если установлено в ноль, он вернет все пары ключ-значение
5

У меня возникли проблемы с сокращением нехватки памяти, и другие решения, похоже, не работали (по крайней мере, я не мог заставить их работать), когда я наткнулся на эту тему. Благодаря 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
var someObj = { "name" : "some name" };
var someObjStr = JSON.stringify(someObj);
console.log( someObjStr  );
5

Один кастом, определенный для этого, пока мы не сделаем странный метод от 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);

ВЫХОД

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

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

  • 0
    не экранирует строки с кавычками, например: "a \" в строке "
  • 0
    Этот пользовательский код очень неполный. Не поддерживает массивы, объекты и специальные символы. Пример: json {"arr": ["1", "2", "3"], "obj": {"a": "b"}, "ключ \" с \\ special} символами ":" значение "} выведет {" arr ":" 1,2,3 "," obj ":" [объект объекта] "," ключ "с \ специальными символами}:" значение "}, что неверно!
4

const obj = { "name":"xxx", "city":"York"};
const myJSON = JSON.stringify(obj);
  console.log(myJSON);
3

Просто скопируйте и выполните pase

$("form").submit(function(evt){
  evt.preventDefault();
  var formData = $("form").serializeArray(); // Create array of object
  var jsonConvertedData = JSON.stringify(formData);  // Convert to json
});
3

Woking... Прост в использовании

$("form").submit(function(evt){
  evt.preventDefault();
  var formData = $("form").serializeArray(); // Create array of object
  var jsonConvert = JSON.stringify(formData);  // Convert to json
});

Спасибо

1
So in order to convert a js object to JSON String: 

Простой синтаксис для преобразования объекта в строку

JSON.stringify(value)

Полный синтаксис: JSON.stringify (значение [, replacer [, пробел]])

Давайте посмотрим несколько простых примеров. Обратите внимание, что вся строка получает двойные кавычки и все данные в строке экранируются при необходимости.

JSON.stringify("foo bar"); // ""foo bar""
JSON.stringify(["foo", "bar"]); // "["foo","bar"]"
JSON.stringify({}); // '{}'
JSON.stringify({'foo':true, 'baz':false}); /* " 
{"foo":true,"baz":false}" */



const obj = { "property1":"value1", "property2":"value2"};
const JSON_response = JSON.stringify(obj);
console.log(JSON_response);/*"{ "property1":"value1", 
"property2":"value2"}"*/
Показать ещё 1 комментарий
1

Существующий JSON заменяет меня слишком много, поэтому я написал свою собственную функцию. Кажется, это работает, но я мог пропустить несколько крайних случаев (которые не встречаются в моем проекте). И, вероятно, не будет работать для каких-либо ранее существующих объектов, только для самодельных данных.

function simpleJSONstringify(obj) {
    var prop, str, val,
        isArray = obj instanceof Array;

    if (typeof obj !== "object") return false;

    str = isArray ? "[" : "{";

    function quote(str) {
        if (typeof str !== "string") str = str.toString();
        return str.match(/^\".*\"$/) ? str : '"' + str.replace(/"/g, '\\"') + '"'
    }

    for (prop in obj) {
        if (!isArray) {
            // quote property
            str += quote(prop) + ": ";
        }

        // quote value
        val = obj[prop];
        str += typeof val === "object" ? simpleJSONstringify(val) : quote(val);
        str += ", ";
    }

    // Remove last colon, close bracket
    str = str.substr(0, str.length - 2)  + ( isArray ? "]" : "}" );

    return str;
}
1

определить объект

let obj = {
"firstname" : "Hello",
"lastname" : "javascript"

};

затем преобразуйте его в строку с помощью этого кода

strObj= JSON.stringify(obj);

чтобы убедиться, что консоль получена.

console.log(strObj);
  • 0
    TNX определить объект
1

если вы хотите получить значение свойств json в формате строки, используйте следующий способ

var i = {"x":1}

var j = JSON.stringify(i.x);

var k = JSON.stringify(i);

console.log(j);

"1"

console.log(k);

'{"x":1}'
1

вы можете использовать собственную функцию stringify, подобную этой

const j={ "name": "binchen" }

/** convert json to string */
const jsonString = JSON.stringify(j)

console.log(jsonString) // {"name":"binchen"}
0

JSON.strigify() - лучший JSON.strigify() для этого.

var x = {
    "name" : "name1",
    "age"    : 20
};
var json = JSON.stringify(x);
console.log(json);
0

Вы можете использовать функцию JSON.stringify() для этого.

0

Для отладки в Node JS вы можете использовать util.inspect(). Лучше работает с циклическими ссылками.

var util = require('util');
var j = {name: "binchen"};
console.log(util.inspect(j));
0

Все, что вам нужно, это добавить этот код ниже
var j={"name":"binchen"}; JSON.stringify(j);//'{"name":"binchen"}'

  • 3
    Чем это отличается от уже принятого ответа?
-3

То, что вы хотите, это:

var yourObject = {a : "string", b : 2 };
Json.Stringify(yourObject);

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

Подробнее проверьте это для получения информации о JSON stringify/parse.

-22

если у вас есть json-строка, и она не завернута в [], а затем заверните сначала

var str = '{"city": "Tampa", "state": "Florida"}, {"city": "Charlotte", "state": "North Carolina"}';
str = '[' + str + ']';
var jsonobj = $.parseJSON(str);

ИЛИ

var jsonobj = eval('(' + str + ')');
console.log(jsonobj);
  • 0
    ОП пытается пойти другим путем. Ваш вопрос отвечает на обратный случай, когда он имеет строку JSON и хочет получить ее как объект.
  • 1
    вы сделали обратный вопрос, чтобы спросить ... вы должны использовать функцию JSON.stringfy ()
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню