Существует ли стандартный способ сериализации JSON с использованием JavaScript и jQuery?

#javascript #jquery #html #json #google-api

#javascript #jquery #HTML #json #google-api

Вопрос:

Я просматривал ответы в Stackoverflow, и, похоже, существует более одного способа сериализации (преобразование ответа JSON обратно в HTML и / или другой код, чтобы мы могли сделать с ним что-то полезное).

Я использую следующий способ..

 $.getJSON(
    "https://www.googleapis.com/shopping/search/v1/public/products?callback=?",
    {
        key: "unique key code", 
        country: "US", 
        q: "iphone", 
        alt: "json" 
    },
    function(data) 
{

$.each(data.items, function(i, item)
  {
  //Do something with each object
  }

}
  

Итак, я использую метод $.getJSON для получения ответа JSON, затем перебираю каждый объект и что-то делаю.

Это нормально? Должен ли я использовать другую функцию для получения ответа JSON?

С уважением, LS

Комментарии:

1. Я не думаю, что сериализация — правильное слово. JSON уже сериализован, это просто строка: ее можно сохранить, ее можно отправить по сети.

2. Спасибо. Я просто пытался описать процесс «преобразования» его в более презентабельный способ для использования на веб-сайтах и в приложениях.

Ответ №1:

если вы установили dataType значение json jquery, он анализирует json для вас

 $.ajax({
dataType:"json",
...
success:function(data){
$.each(data.items, function(i, item)
  {
  //Do something with each object
  }   
}

});
  

Комментарии:

1. Уверен $.getJSON() , что это все равно происходит внутри

2. @Phil да, но, поскольку я интерпретировал вопрос, ОП хотел знать, может ли он использовать его без использования getJSON

3. Не понимаю, почему вы хотели бы это сделать. Каждый из методов $.get*() и $.post() jQuery — это просто обертки $.ajax() .

4. вот почему я не писал явных реализаций, суть которых заключалась в том, чтобы просто установить dataType значение json

Ответ №2:

Нет, вы делаете это отлично. jQuery обрабатывает преобразование «строки» в данные json и обратно.

В браузерах существуют собственные реализации преобразования в JSON и из него, однако важно отметить, что старые браузеры не поддерживают это из коробки. Вы должны включить json2.js библиотеку, чтобы обеспечить поддержку JSON.

 var dataJson={"something":"special"};
var jsonString=JSON.stringify(dataJson);
var dataJsonAgain=JSON.parse(jsonString);
  

У jQuery есть дополнительный хак в том, как он анализирует JSON, если нет собственной реализации, без использования eval, поскольку eval — это зло! Это выглядит примерно так;

 (new Function("return " dataJson))()
  

самым простым способом было бы придерживаться jQuery и его parseJSON функции, которая выполняет полизаполнение за вас.