Я собираюсь получить с сервера либо объект JSON, либо массив, но понятия не имею, что это будет. Мне нужно работать с JSON, но для этого мне нужно знать, является ли он объектом или массивом.
Я работаю с Android.
Есть ли у кого-нибудь хороший способ сделать это?
Ответы:
Я нашел лучший способ определить:
tokenizer может возвращать больше типов: http://developer.android.com/reference/org/json/JSONTokener.html#nextValue ()
источник
JSONTokener
. Я этого не делал, но полагаю, вам следует пропуститьPast ("your_key") . Но я не уверен. Однако вам следует подумать об использовании json mapper: Gson, Jackson, Moshi и многих других.Это можно сделать двумя способами:
{
, вы имеете дело с aJSONObject
, если это a[
, вы имеете дело с aJSONArray
.Object
), вы можете выполнитьinstanceof
проверку.yourObject instanceof JSONObject
, Это вернет истину, если yourObject является JSONObject. То же самое и с JSONArray.источник
Это простое решение, которое я использую на Android:
источник
json.has("data")
предполагает, что все это необязательно (не запрашивается).Представляя другой способ:
Вот
server_response
строка ответа, поступающая с сервераисточник
Более фундаментальный способ сделать это следующий.
JsonArray
по своей сути является спискомJsonObject
по сути является картойисточник
случай
Object.getClass (). GetName ()
источник
Для тех, кто решает эту проблему с помощью JavaScript, я сделал следующее (не уверен, насколько это эффективно).
источник
Мой подход был бы полной абстракцией от этого. Может, кому-то это пригодится ...
А теперь избавься от этого поведения навсегда ...
источник