Как читать как один объект, так и массив объектов в json, используя javascript / jquery - PullRequest
2 голосов
/ 05 августа 2010

Я написал json reader для чтения данных и отлично работает с приведенными ниже данными.

{"menu": {
  "id": "file",
  "value": "File",
  "popup": {
    "menuitem": [
      {"value": "New", "onclick": "CreateNewDoc()"},
      {"value": "Open", "onclick": "OpenDoc()"},
      {"value": "Close", "onclick": "CloseDoc()"}
    ]
  }
}}

но когда json возвращает один элемент меню из API, как

{"menu": {
  "id": "file",
  "value": "File",
  "popup": {
    "menuitem": 
      {"value": "Close", "onclick": "CloseDoc()"}

  }
}}

menuitem - это объект вместо массива. Итак, мой читатель json не может читать, так как я читаю в массиве пунктов меню по циклу.

решение очень ценится. Как это обрабатывается другими крупными сайтами?

Ответы [ 2 ]

1 голос
/ 05 августа 2010

jQuery's makeArray идеально подходит для этого.
http://api.jquery.com/jQuery.makeArray/

Он возьмет что угодно и вернет массив, поэтому, если это уже массив, он передает его как есть, но если это скаляр, он делает из него однозначный массив.Затем вы можете повторить результат.

0 голосов
/ 03 сентября 2013

Предполагая, что вы хотите прочитать «значение» пункта меню, вы можете использовать

if(menuitem.value!=undefined)//this will return undefined if the menu item is an array

Тогда другое дело - использовать menuitem[0].value, если указанное выше условие ложно.Надеюсь, это решит вашу проблему в некоторой степени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...