2013-06-14 2 views
0

Я использую пакет org.json на Java (Android), и я просто споткнулся с простой проблемой.Java - как разобрать как json массивы, так и объекты

Веб-сервер возвращает массив, если все в порядке, но объект json { error : true, ...}, если что-то пошло не так.

Как я могу разобрать это в общий объект? Я имею в виду, что и массивы, и объекты - это все-таки json, но кажется, что JSONArray и JSONOBject не имеют общего интерфейса.

Я что-то упустил?

ответ

2

Используйте JSONTokener.nextValue() и проверьте, является ли результат JSONObject или JSONArray (с использованием instanceof).

+0

Ницца, не знал этого класса. – Flo

1

Настоящий ответ - исправить веб-сервер и вернуть ему результат согласования. В противном случае вам придется вручную проверять возвращаемые данные, чтобы увидеть, что это такое.

Другой вариант - поймать JSONException конструктор для JSONArray будет бросать, когда это не массив, который указывает вам, что вы должны попробовать JSONObject.

+0

Я работал с jquery много раньше, так что это никогда не было проблемой, и я думаю, что до тех пор, пока сервер вернет правильный json, тогда это нормально. – Flo

+0

Это «нормально», потому что это действительно JSON. С точки зрения дизайна * это плохо, и именно поэтому вам приходится прыгать через обручи на языке, который * не * динамически типизирован (и даже в том, что вы по-прежнему имеете дело с двумя разными типами). Если объекту был возвращен объект в обоих случаях, эти проблемы исчезнут. –

Смежные вопросы