Objeto de matriz Iterate JSON
Soy nuevo al concepto entero de java así que si el título es incorrecto, por favor desnuda conmigo. Estoy consultando y obtener una cadena json devuelto, por el bien de este ejemplo voy a publicar un ejemplo. Estoy tratando de averiguar cómo iba a cavar a través de la matriz de valores y encontrar que está marcado como predeterminado.
Ejemplo JSON
- Creación de un WebService ASP.net que devuelve JSON en lugar de XML
- JSON Parsing funciona en Android 4.0 pero no en Android <4.0
- Cómo crear dinámicamente grupos y childs en listview expandible desde json en android?
- ¿Cómo puedo extraer la cadena de JSON sin procesar de un objeto de respuesta de OkHttp?
- Android analiza la serie Json de cadenas
{ "id": "333706819617", "guid": "4aCdriCG0WvfYEUkFf8_xqQEFxgwgNU8", "title": "Test entry", "author": "", "description": "Desc", "added": 1411702963000, "content": [ { "audioChannels": 2, "audioSampleRate": 44100, "bitrate": 281656, "checksums": { "md5": "70DF3E21131F9F02C3F0A74F3664AB73" }, "contentType": "audio", "duration": 43.258, "expression": "full", "fileSize": 1522986, "frameRate": 0.0, "format": "AAC", "height": 288, "isDefault": false, "language": "en", "sourceTime": 0.0, "url": "http://example.com/dZiASoxchRyS", "width": 352 }, { "audioChannels": 2, "audioSampleRate": 44100, "bitrate": 160000, "checksums": { "md5": "3AC622D31B9DED37792CC7FF2F086BE6" }, "contentType": "audio", "duration": 43.206, "expression": "full", "fileSize": 866504, "frameRate": 0.0, "format": "MP3", "height": 0, "isDefault": false, "language": "", "sourceTime": 0.0, "url": "http://example.com/59M_PSFgGGXE", "width": 0 } ], "thumbnails": [ { "audioChannels": 0, "audioSampleRate": 0, "bitrate": 0, "checksums": { "md5": "BE8C98A07B3FE9020BFA464C42112999" }, "contentType": "image", "duration": 0.0, "expression": "full", "fileSize": 20379, "frameRate": 0.0, "format": "JPEG", "height": 256, "isDefault": true, "language": "", "sourceTime": 0.0, "url": "http://img.example.com/waveform.jpg", "width": 256 } ] }
Tomo la cadena de JSON y la convierto de nuevo en un JSONObject
JSONObject mediaObject = new Gson().fromJson(mediaString, JSONObject.class); String content = mediaObject.optString("content");
Cuando envío content
, devuelve lo siguiente.
{values=[{nameValuePairs={audioChannels=2.0, audioSampleRate=44100.0, bitrate=281656.0, checksums={nameValuePairs={md5=70DF3E21131F9F02C3F0A74F3664AB73}}......
¿Cómo paso correctamente a través de los valores de contenido y encontrar el valor de isDefault
? En el ejemplo JSON no hay ningún contenido donde isDefault = true
por lo que el valor predeterminado para el primer objeto.
Parece que sólo puedo orientar los valores como cadena, ¿tengo que emitir content
como un JSONArray
?
Edit: Parece que no puedo convertir mediaObject.content
en un JSONArray. mediaObject.optJSONArray("content")
devuelve null. También he tratado de obtenerlo como una cadena de convertir en un JSONArray sin prevaleciente.
Edit 2: Encontré el problema con los datos, cuando estaba analizando el json con gson, estaba jugando con los datos finales outputted.
Así que cambié de new Gson().toJson(jsonObject);
A jsonObject.toString())
y ahora podría apuntar los arrays usando optJSONArray
. Para obtener los datos de nuevo en un JSONObject, utilicé JSONObject mediaObject = new JSONObject(mediaString);
GSON estaba alterando los datos
- Parse JSON Array sin clave en Android
- Envío de datos JSON de Android a PHP y escritura a archivo de texto
- Uso del archivo JSON en los recursos de la aplicación para Android
- ¿Cómo enviar un objeto JSON a través de HttpClient Request con Android?
- Valor de Json Parsing y Nullable int en android
- Json no funciona con HttpPost probablemente alrededor de setEntity
- ¿Cómo enviar algunos datos adicionales al enviar notificaciones push usando OneSignal?
- GSON. Cómo convertir json objeto a json array?
En lugar de extraer el valor de cadena del contenido de su JSONObject, puede obtener un JSONArray en su lugar
JSONArray content = mediaObject.getJSONArray("content");
Ahora usted puede hacer un bucle a través de los objetos en su matriz con un bastante convencional para el bucle
for(int i = 0; i < content.length(); i++) { JSONObject mediaItem = content.getJSONObject(i); boolean itemIsDefault = mediaItem.getBoolean("isDefault"); }
Aquí están los enlaces a todos los métodos JSONObject y JSONArray
No puedes simplemente
JSONObject mJson = new JSONObject(inputString);
¿Por qué estás usando Gson?
- Cómo ejecutar Android Emulator desde Shell en Ubuntu Server
- Google google maps con marcador dentro del fragmento