Использование php json_decode с массивом 1d и 2d

0

Я использую json_decode в PHP для декодирования объекта JSON, который может иметь 1d массив или 2d-массив для значения:

{"Cell":{"@column":"ZjE6dW5pdmVyc2l0eQ==","@timestamp":"1425598820484","$":"MC44MDc2NDEwNDg0MjI5MjMy"}}

или

{"Cell":[{"@column":"ZjE6YQ==","@timestamp":"1425599309809","$":"MC4wNTYzMzgwMjgxNjkwMTQwODY="},{"@column":"ZjE6YW5k","@timestamp":"1425599309809","$":"MC4wNTYzMzgwMjgxNjkwMTQwODY="},{"@column":"ZjE6Y2F0Y2hlcw==","@timestamp":"1425599309809","$":"MC4wNDIyNTM1MjExMjY3NjA1Ng=="},{"@column":"ZjE6aQ==","@timestamp":"1425599309809","$":"MC4wOTg1OTE1NDkyOTU3NzQ2NA=="},{"@column":"ZjE6dGhhdA==","@timestamp":"1425599309809","$":"MC4xNjkwMTQwODQ1MDcwNDIyNQ=="}]}

и я использую $ Cell = $ json ["Cell"] для доступа к элементам. Проблема, с которой я сталкиваюсь, заключается в том, что второй случай играет красиво, и я получаю массив массивов, в то время как первый должен быть единственным массивом элементов, но интерпретируется как массив из 3 элементов.

  • 2
    Первый, как сейчас, не является допустимым JSON.
  • 0
    Исправлен формат.
Показать ещё 5 комментариев
Теги:
arrays

1 ответ

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

Не можете ли вы просто проверить, есть ли у элемента ключ? Как это:

if (isset($json['Cell']['@column']) {
    // do stuff with single-element
} else {
    // it is a collection
}
  • 0
    Это кажется самым простым способом добиться цели, и это работает. Хотя я использовал is_array, а не isset.

Ещё вопросы

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