Перетворити об'єкт JS в рядок JSON


1244

Якщо я визначив об'єкт у JS за допомогою:

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

Як я можу перетворити об’єкт у JSON? Вихідний рядок повинен бути:

'{"name":"binchen"}'

63
JSON.stringify()метод, який ви шукаєте.
Gowtham Gopalakrishnan

10
Завжди є той перший раз, коли ти мусиш це навчитися.
Еган Вовк

Відповіді:


1922

Усі поточні веб-переглядачі мають вбудовану підтримку JSON. Отже, поки ви не маєте справу з доісторичними браузерами, такими як IE6 / 7, ви можете це зробити так само просто:

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


5
завантажте цей сценарій , JSON.stringify(j);щоб працювати
AabinGunz

2
Працюйте над nodejs, тому що вузол використовує один і той же двигун
georgelviv

26
Ця відповідь була розміщена за рік до виходу IE9, тож на момент написання IE8 справді був сучасним браузером, або, принаймні, це був останній доступний IE.
Андріс

JSON.stringify не перетворює вкладені об'єкти. Будь-яке рішення для цього .. ??
Ritesh

9
Якщо вам потрібна більш читабельна рядок json, ви можете використовувати параметр пробілу, наприкладvar formattedJSON = JSON.stringify(j, null, 2);
Jacek Gzel

110

З 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 це необов'язково, так що якщо ви хочете по- як і раніше використовувати spaceARG ви поклали nullна replacer. Якщо ви зацікавлені у використанні цієї функції для гарного друку, я вважаю цю відповідь також корисною: stackoverflow.com/a/7220510/857209
Glenn Lawrence

34

Перевірте оновлений / кращий спосіб Томаса Франка:

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

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

  • обробляти та відновлювати циклічні посилання
  • включіть код JavaScript для функцій / методів (як опція)
  • виключити членів об’єкта з Object.prototype, якщо потрібно.

23

Ви можете використовувати метод JSON.stringify () для перетворення об'єкта JSON в String.

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

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


Дякуємо за додавання зворотного процесу.
Девід Лав’єрі

12

У кутовій JS

angular.toJson(obj, pretty);

obj: Вхід для серіалізації в JSON.

досить (необов’язково):
Якщо встановлено значення true, вихід JSON буде містити нові рядки та пробіли. Якщо встановлено ціле число, вихід JSON буде містити стільки пробілів на відступ.

(за замовчуванням: 2)


12

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

Другий параметр - замінювач. Він може використовуватися як Filter, де ви можете відфільтрувати певні ключові значення при строфікації. Якщо встановлено значення null, воно поверне всі пари ключових значень



9

JSON.stringify перетворює об'єкт Javascript у текст JSON і зберігає цей текст JSON у рядку.

Перетворення - це об'єкт для рядка

JSON.parse перетворює рядок тексту JSON в об'єкт Javascript.

Перетворення - це рядок до об'єкта

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

Один призначений для цього звичай, поки ми не зробимо дивний метод 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/


не уникає рядків із лапками: "a \" in string "
alphakevin

1
Цей спеціальний код дуже неповний. Не підтримує масиви, об'єкти та спеціальні символи. Приклад: json {"arr": ["1", "2", "3"], "obj": {"a": "b"}, "key \" з \\ спеціальними} символами ":" значення "} виведе {" arr ":" 1,2,3 "," obj ":" [об'єкт об'єкта] "," ключ "з \ special} символами": "значення"}, що неправильно!
Мануель Ромейро

7

У мене виникли проблеми зі строгим вичерпанням пам’яті та інші рішення, схоже, не спрацювали (принаймні, я не міг змусити їх працювати), які виникають, коли я натрапив на цю нитку. Завдяки Рохіту Кумару я просто повторюю свій дуже великий об’єкт 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

Пробудження ... Простота у використанні

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

Дякую



3

якщо ви хочете отримати значення властивостей 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}'

3

Для налагодження в Node JS можна використовувати util.inspect () . Це краще працює з круговими посиланнями.

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

3

Існуючі заміни 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;
}

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

Простий синтаксис для перетворення об’єкта в рядок є

JSON.stringify(value)

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

Розглянемо кілька простих прикладів. Зауважте, що весь рядок отримує подвійні лапки, і всі дані в рядку отримують уникнути необхідності.

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"}"*/

2
Було б чудово, якби ви могли дати коротке пояснення свого коду.
jonny

Це не дає відповіді на запитання. Коли у вас буде достатня репутація, ви зможете коментувати будь-яку публікацію ; натомість надайте відповіді, які не потребують уточнення від запитувача . - З огляду
Рафаель

Я відредагував свою відповідь, дуже дякую, що вказали на @Rafael та @ jonny.
Рахул Чудхарі

1

Просто використовуйте JSON.stringifyдля такого перетворення - проте пам’ятайте, що поля, які мають undefinedзначення, не будуть включені до json

var j={"name":"binchen", "remember":undefined, "age": null };

var s=JSON.stringify(j);

console.log(s);

Поле remember"зникає" з вихідного json


Ти щойно врятував мені день. Я не зміг врятувати свій об’єкт. ключ до того, що поля, які мають невизначене значення, не будуть включені до json, вирішили мою проблему!
Мохаммед Гончесефіді

0

Ви можете використовувати метод JSON.stringify () для перетворення об'єкта JSON в String.

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

Щоб перетворити цю рядок назад в об’єкт json, ви можете використовувати метод JSON.parse ().


0

використання JSON.stringify(param1, param2, param3);

Що: -

param1 -> значення для перетворення в JSON

param2 -> функція для того, щоб поширити по-своєму. Крім того, він служить білим списком, для якого об’єкти потрібно включити до остаточного JSON.

param3 -> Тип даних про номер, який вказує кількість пробілів, які потрібно додати. Максимум дозволено - 10.


0

convert str => obj

const onePlusStr = '[{"бренд": "oneplus"}, {"модель": "7T"}]';

const onePLusObj = JSON.parse (onePlusStr);

конвертувати obj => str

const onePLusObjToStr = JSON.stringify (onePlusStr);

Посилання на розбір JSON в JS:
JSON.parse (): натисніть
JSON.stringify (): натисніть


Чи можете ви надати більше інформації? Список літератури тощо
Nodejs-nerd

Посилання на розбір JSON в JS: JSON.parse (): w3schools.com/js/js_json_parse.asp JSON.stringify (): w3schools.com/js/js_json_stringify.asp
яш

дякую, чи можете ви відредагувати свою відповідь, щоб включити це
Nodejs-nerd

0

Дуже простий у використанні метод, але не використовуйте його у випуску (через можливі проблеми із сумісністю).

Чудово підходить для тестування на вашому боці.

Object.prototype.toSource()

//Usage:
obj.toSource();

0

Використовуйте функцію stringify

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

var j_json = JSON.stringify(j);

console.log("j in json object format :", j_json);

Щасливого кодування !!!


0
//use JSON.stringify({})

const stringified = JSON.stringify ({}) // передавати об’єкт, який потрібно перетворити у рядковому форматі


-1

Використовуй це,

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

-24

якщо у вас є рядок 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);

ОП намагається піти іншим шляхом. Ваше запитання відповідає на зворотний випадок, коли він має рядок JSON і хоче отримати його як об’єкт.
Джошуа Снайдер

1
ви зробили зворотну річ, щоб поставити питання .. ви повинні використовувати функцію
JSON.stringfy
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.