Перетворити об’єкт у рядок JSON


122

jQuery.parseJSON('{"name":"John"}')перетворює рядкове представлення в об'єкт, але я хочу зворотне. Об'єкт повинен бути перетворений у рядок JSON. Я отримав посилання http://www.devcurry.com/2010/03/convert-javascript-object-to-json.html, але для цього потрібно мати json2.js do jQuery має рідну метод зробити це?


Відповіді:


188

jQuery робить лише деяку перевірку регулярного вибору, перш ніж викликати метод рідного браузера window.JSON.parse(). Якщо це недоступно, він використовує eval()або більш точно new Function()для створення об’єкта Javascript.

Протилежне JSON.parse()тому, JSON.stringify()що серіалізує об’єкт Javascript у рядок. jQuery не має власного функціоналу для цього, ви повинні використовувати вбудовану версію браузера або json2.jsз http://www.json.org

JSON.stringify() доступний у всіх основних браузерах, але щоб бути сумісним із старими браузерами, вам все ще потрібен цей резервний.


4
це може бути корисно:var theObject = (typeof data == "string") ? jQuery.parseJSON(data) : data;
roberthuttinger

2
@tekretic: Я сподіваюся, що ти тролінг. Chrome реалізує JSONхост-об’єкт з 1-го дня
jAndy,

5
@jAndy: Ого, вибачте. Не тролінг, але ОН так неправильно. Виявляється, в середині 2009 року підтримка JSON була додана до WebKit , завдяки чому вона підтримується з Chrome 3.0. Мій попередній, цілком неточний коментар базувався на половині цього застарілого запитання в поєднанні з CMS, над яким я працюю в даний момент, який фактично замінює window.JSON власною бібліотекою, значення JSON.stringify()не визначено. Зовсім невдалий за всіма пунктами.
Моломбі


1
@jAndy: не бентежи мене; : JSON.stringify "серіалізує" об'єкт, будь ласка, скажіть, що це просто помилка
напівбіт

12

Також корисний Object.toSource () для цілей налагодження, де ви хочете показати об’єкт та його властивості для цілей налагодження. Це загальна функція Javascript (не jQuery), однак вона працює лише у "сучасних" браузерах.


4

Перетворити об’єкт JavaScript в дані json

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

Ви можете перевірити дані json за допомогою http://jsonlint.com


2

Ви можете використовувати відмінний плагін jquery-Json:

http://code.google.com/p/jquery-json/

Легко конвертувати в об'єкти Json і до них.


2
Будь-ласка, рекомендуйте методи SPL над логічними бібліотеками надбудови.
Девід Дж Едді

2
SPL = Стандартна бібліотека PHP В цьому випадку, можливо, буде SJL (стандартна бібліотека javascript).
David J Eddy

3
Питання стосується jQuery & Javascript. Це не має нічого спільного з PHP, PHP-бібліотеками або SPL.
Джордж Філіппакос

3
стандартні бібліотеки - це стандартні бібліотеки; не має значення мови. Моя думка, що краще рекомендувати рішення, яке вчить мову над синдромом "використовувати цей плагін".
David J Eddy

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