Convertir cadena a matriz JSON
Tengo la siguiente cadena de un JSON de un servicio web y estoy intentando convertirlo en unJSONarray
{
"locations": [
{
"lat": "23.053",
"long": "72.629",
"location": "ABC",
"address": "DEF",
"city": "Ahmedabad",
"state": "Gujrat",
"phonenumber": "1234567"
},
{
"lat": "23.053",
"long": "72.629",
"location": "ABC",
"address": "DEF",
"city": "Ahmedabad",
"state": "Gujrat",
"phonenumber": "1234567"
},
{
"lat": "23.053",
"long": "72.629",
"location": "ABC",
"address": "DEF",
"city": "Ahmedabad",
"state": "Gujrat",
"phonenumber": "1234567"
},
{
"lat": "23.053",
"long": "72.629",
"location": "ABC",
"address": "DEF",
"city": "Ahmedabad",
"state": "Gujrat",
"phonenumber": "1234567"
},
{
"lat": "23.053",
"long": "72.629",
"location": "ABC",
"address": "DEF",
"city": "Ahmedabad",
"state": "Gujrat",
"phonenumber": "1234567"
}
]
}
Validé esto String
en línea, parece ser correcto. Ahora estoy usando el siguiente código en el desarrollo de Android para utilizar
JSONArray jsonArray = new JSONArray(readlocationFeed);
Esto genera una excepción, una excepción de falta de coincidencia de tipos.
Aceptado
Aquí obtienes JSONObject, así que cambia esta línea:
JSONArray jsonArray = new JSONArray(readlocationFeed);
con lo siguiente:
JSONObject jsnobject = new JSONObject(readlocationFeed);
y después
JSONArray jsonArray = jsnobject.getJSONArray("locations");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject explrObject = jsonArray.getJSONObject(i);
}
Cadena de entrada
[
{
"userName": "sandeep",
"age": 30
},
{
"userName": "vivan",
"age": 5
}
]
Manera sencilla de convertir cadenas a JSON
public class Test
{
public static void main(String[] args) throws JSONException
{
String data = "[{\"userName\": \"sandeep\",\"age\":30},{\"userName\": \"vivan\",\"age\":5}] ";
JSONArray jsonArr = new JSONArray(data);
for (int i = 0; i < jsonArr.length(); i++)
{
JSONObject jsonObj = jsonArr.getJSONObject(i);
System.out.println(jsonObj);
}
}
}
Producción
{"userName":"sandeep","age":30}
{"userName":"vivan","age":5}
Usando json lib: -
String data="[{"A":"a","B":"b","C":"c","D":"d","E":"e","F":"f","G":"g"}]";
Object object=null;
JSONArray arrayObj=null;
JSONParser jsonParser=new JSONParser();
object=jsonParser.parse(data);
arrayObj=(JSONArray) object;
System.out.println("Json object :: "+arrayObj);
Usando la biblioteca GSON: -
Gson gson = new Gson();
String data="[{\"A\":\"a\",\"B\":\"b\",\"C\":\"c\",\"D\":\"d\",\"E\":\"e\",\"F\":\"f\",\"G\":\"g\"}]";
JsonParser jsonParser = new JsonParser();
JsonArray jsonArray = (JsonArray) jsonParser.parse(data);
deberá convertir la cadena dada en JSONObject
lugar de JSONArray
porque la cadena actual contiene JsonObject
como elemento raíz en lugar de JsonArray
:
JSONObject jsonObject = new JSONObject(readlocationFeed);