#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
функции, которая выполняет полизаполнение за вас.