синтаксический анализ данных JSON с помощью сценария Java

1

Я использую API Google плюс API и получаю от него эти данные и получаю сообщение об ошибке при анализе данных JSON

Изображение 174551

Изображение 174551

и вот код, который я использую для синтаксического анализа этих данных и получения ошибки, поскольку объект данных проверен и отлично работает и хранит данные, как это показано в последних двух изображениях

var allIems = data.items;
for (var element in allIems) {
  document.getElementById('datafromapi').innerHTML +=
    (" , published time :" + element.published +
      " , last updated time :" + element.updated +
      ", complete url : " + element.url

    );
  var obj = element.object.attachments;

  document.getElementById('datafromapi').innerHTML +=
    (+"\nattachments of post :\n" +
      " type : " +
      obj[0].objectType +
      " ,displayName of content : " +
      obj[0].displayName +
      " ,content URL  : " +
      obj[0].url +
      " ,content data :" +
      obj[0].image.url +
      " ,content type : " +
      obj[0].image.type +
      " ,content height : " +
      obj[0].image.height +
      " ,content width : " +
      obj[0].image.width +
      "\n\n\n");


}
});

я получил эту ошибку

Uncaught TypeError: Не удается прочитать свойства "вложения" неопределенного

  • 0
    Эта ошибка, потому что НЕ все element содержат свойство object .
  • 0
    ошибка в атрибуте вложений, а не объекте, и все элементы имеют атрибут объекта
Показать ещё 4 комментария
Теги:
parsing

2 ответа

1
Лучший ответ

значения element в

for (var element in allIems) {

являются ключами allItems, которые в этом случае являются индексами массива. Вы должны обратиться к фактическим элементам массива следующим образом:

var obj = allItems[element].object.attachments;

Ваш код element.object.attachments; пытается получить доступ к object свойства числа, которого не существует.

Поскольку мы знаем, что allItems - это массив, вы могли бы написать:

for (var i = 0; i < allIems.length; i++) {
  var obj = allItems[i].object.attachments;
  • 0
    Большое спасибо, что работа со мной
1

Javascript имеет встроенный анализатор JSON, который вы можете использовать, который принимает строку данных и возвращает объект.

let jsonDataAsString = "{\"a\":1,\"b\":2}";

let jsonDataAsObject = JSON.parse(jsonDataAsString);

Затем вы можете проходить через данные как объект, ссылаясь на свойства с помощью точечной нотации

console.log(jsonDataAsObject.a); // 1

Чтобы быть в безопасности, вы должны сравнивать свойства с нулевым, прежде чем пытаться использовать

if(jsonDataAsObject.somePropery != null) {
    // the property exists so you can access it here
}
  • 1
    Вы, вероятно, хотите сначала проверить, является ли свойство неопределенным , так как оно может быть определено и установлено в значение null (полностью допустимо).
  • 0
    спасибо за информацию, это было ново для меня
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню