Я использую 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 элементов.
Не можете ли вы просто проверить, есть ли у элемента ключ? Как это:
if (isset($json['Cell']['@column']) {
// do stuff with single-element
} else {
// it is a collection
}