recorrer - Cómo analizar un objeto JSON en Android
json array android studio (4)
Al final lo resolví usando JSONObject.get
lugar de JSONObject.getString
y luego JSONObject.getString
test
a una String
.
private void saveData(String result) {
try {
JSONObject json= (JSONObject) new JSONTokener(result).nextValue();
JSONObject json2 = json.getJSONObject("results");
test = (String) json2.get("name");
} catch (JSONException e) {
e.printStackTrace();
}
}
Estoy teniendo problemas para extraer valores de un objeto JSON. Aquí está mi código
try {
JSONObject json = new JSONObject(result);
JSONObject json2 = json.getJSONObject("results");
test = json2.getString("name");
} catch (JSONException e) {
e.printStackTrace();
}
test
se declara como una String
. Cuando el código se ejecuta, muestra null
. Si json2
sobre json2
en modo de depuración, puedo ver todos los valores y nombres dentro del objeto.
También intenté
test = json2.length();
Esta test = 0
devuelta test = 0
. Incluso cuando json2
objeto json2
, puedo leer los valores dentro del objeto.
Aquí hay un ejemplo de una cadena JSON que usaré.
{
"caller":"getPoiById",
"results":
{
"indexForPhone":0,
"indexForEmail":"NULL",
"indexForHomePage":"NULL",
"indexForComment":"NULL",
"phone":"05137-930 68",
"cleanPhone":"0513793068",
"internetAccess":"2",
"overnightStay":"2",
"wasteDisposal":"2",
"toilet":"2",
"electricity":"2",
"cran":"2",
"slipway":"2",
"camping":"2",
"freshWater":"2",
"fieldNamesWithValue":["phone"],
"fieldNameTranslations": ["Telefon"],
"id":"1470",
"name":"Marina Rasche Werft GmbH & Co. KG",
"latitude":"52.3956107286487",
"longitude":"9.56583023071289"
}
}
Eche un vistazo a http://developer.android.com/reference/org/json/JSONTokener.html
Esto podría solucionar tu problema.
En su formato JSON, no tiene un objeto JSON inicial
Me gusta :
{
"info" : <!-- this is starting JSON object -->
{
"caller":"getPoiById",
"results":
{
"indexForPhone":0,
"indexForEmail":"NULL",
.
.
}
}
}
Por encima de Json comienza con info
como objeto JSON. Entonces al ejecutar:
JSONObject json = new JSONObject(result); // create JSON obj from string
JSONObject json2 = json.getJSONObject("info"); // this will return correct
Ahora, podemos acceder al campo de result
:
JSONObject jsonResult = json2.getJSONObject("results");
test = json2.getString("name"); // returns "Marina Rasche Werft GmbH & Co. KG"
Creo que faltaba esto y el problema se solucionó mientras usamos JSONTokener
como respuesta tuya.
Tu respuesta es muy buena Solo creo que agregué esta información, así que respondí
Gracias
JSONArray jsonArray = new JSONArray(yourJsonString);
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject obj1 = jsonArray.getJSONObject(i);
JSONArray results = patient.getJSONArray("results");
String indexForPhone = patientProfile.getJSONObject(0).getString("indexForPhone"));
}
Cambie a JSONArray, luego convierta a JSONObject.