Converter objeto em string JSON

Respostas:

188

O jQuery faz apenas algumas verificações de regexp antes de chamar o método nativo do navegador window.JSON.parse(). Se isso não estiver disponível, ele usa eval()ou mais exatamente new Function()para criar um objeto Javascript.

O oposto JSON.parse()é o JSON.stringify()que serializa um objeto Javascript em uma string. jQuery não tem funcionalidades próprias para isso, você tem que usar o navegador embutido versão ou json2.jsde http://www.json.org

JSON.stringify() está disponível em todos os principais navegadores, mas para ser compatível com navegadores mais antigos, você ainda precisa desse recurso.

jAndy
fonte
4
isto pode ser útil:var theObject = (typeof data == "string") ? jQuery.parseJSON(data) : data;
roberthuttinger 5/12/12
2
@tekretic: Espero que você esteja trollando. Cromo implementa o JSONobjecto hospedeiro desde o dia 1.
JANDY
5
@ jAndy: Oh uau, desculpe. Não trollando, mas OH tão errado. Acontece que o suporte JSON nativo foi adicionado ao WebKit em meados de 2009 , tornando-o compatível desde o Chrome 3.0. Meu comentário anterior, totalmente impreciso, foi baseado em metade dessa questão desatualizada, combinada com o CMS no qual estou trabalhando no momento, que substitui window.JSON por sua própria biblioteca, o significado JSON.stringify()não está definido. Bastante falha em todos os aspectos.
Molomby 7/09/12
13
Para os interessados, aqui está um bom gráfico de suporte a JSON nativo em diferentes navegadores .
Molomby 7/09/12
1
@ jAndy: não me confunda; : JSON.stringify 'serializa' um objeto, por favor, diga que é apenas um erro
halfbit
12

Também é útil Object.toSource () para fins de depuração, onde você deseja mostrar o objeto e suas propriedades para fins de depuração. Esta é uma função Javascript genérica (não jQuery), mas só funciona em navegadores "modernos".

Excalibur
fonte
4

Converter objeto JavaScript em dados 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);
});

Você pode validar dados json usando http://jsonlint.com

Subroto Biswas
fonte
2

Você pode usar o excelente plugin jquery-Json:

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

Facilita a conversão de e para objetos Json.

George Filippakos
fonte
2
Por favor, recomende métodos SPL em bibliotecas lógicas complementares.
David J Eddy
2
SPL = Biblioteca PHP Padrão. Acho que, neste caso, seria seria SJL (biblioteca javascript padrão).
David J Eddy
3
A questão é sobre jQuery e Javascript. Não tem nada a ver com PHP, bibliotecas PHP ou SPL.
George Filippakos
3
bibliotecas padrão são bibliotecas padrão; não importa o idioma. Meu argumento é que é melhor recomendar uma solução que ensine o idioma sobre a síndrome do 'use este plugin'.
David J Eddy
1
Exatamente, por que reinventar a roda ... use as habilidades padrão de uma linguagem sobre um 'plugin', mas discordo.
David J Eddy