El tutorial o código que hallarás en este post es la resolución más sencilla y válida que hallamos a tu duda o problema.
Solución:
Tal vez no esté utilizando la última versión de una biblioteca JSON para Java.
json-simple
no se ha actualizado durante mucho tiempo, mientras que JSON-Java
fue actualizado hace 2 meses.
JSON-Java
se puede encontrar en GitHub, aquí está el enlace a su repositorio: https://github.com/douglascrockford/JSON-java
Después de cambiar la biblioteca, puede consultar mi código de muestra a continuación:
public static void main(String[] args)
String JSON = ""LanguageLevels":"1":"Pocz\u0105tkuj\u0105cy","2":"\u015arednioZaawansowany","3":"Zaawansowany","4":"Ekspert"n";
JSONObject jsonObject = new JSONObject(JSON);
JSONObject getSth = jsonObject.getJSONObject("LanguageLevels");
Object level = getSth.get("2");
System.out.println(level);
Y como JSON-Java
de código abierto, puede leer el código y su documento, lo guiarán.
Espero que ayude.
Tendrá que iterar paso a paso en JSON anidado.
por ejemplo, un JSON recibido de la API de geocodificación de Google
"results" : [
"address_components" : [
"long_name" : "Bhopal",
"short_name" : "Bhopal",
"types" : [ "locality", "political" ]
,
"long_name" : "Bhopal",
"short_name" : "Bhopal",
"types" : [ "administrative_area_level_2", "political" ]
,
"long_name" : "Madhya Pradesh",
"short_name" : "MP",
"types" : [ "administrative_area_level_1", "political" ]
,
"long_name" : "India",
"short_name" : "IN",
"types" : [ "country", "political" ]
],
"formatted_address" : "Bhopal, Madhya Pradesh, India",
"geometry" :
"bounds" :
"northeast" :
"lat" : 23.3326697,
"lng" : 77.5748062
,
"southwest" :
"lat" : 23.0661497,
"lng" : 77.2369767
,
"location" :
"lat" : 23.2599333,
"lng" : 77.412615
,
"location_type" : "APPROXIMATE",
"viewport" :
"northeast" :
"lat" : 23.3326697,
"lng" : 77.5748062
,
"southwest" :
"lat" : 23.0661497,
"lng" : 77.2369767
,
"place_id" : "ChIJvY_Wj49CfDkR-NRy1RZXFQI",
"types" : [ "locality", "political" ]
],
"status" : "OK"
Voy a iterar de la siguiente manera dada
a “ubicación”: { “lat”: 23.2599333, “lng”: 77.412615
// recibir JSON en el objeto json
JSONObject json = new JSONObject(output.toString());
JSONArray result = json.getJSONArray("results");
JSONObject result1 = result.getJSONObject(0);
JSONObject geometry = result1.getJSONObject("geometry");
JSONObject locat = geometry.getJSONObject("location");
//"iterate onto level of location";
double lat = locat.getDouble("lat");
double lng = locat.getDouble("lng");
Puede ver que JSONObject extiende un HashMap
por lo que simplemente puede usarlo como HashMap:
JSONObject jsonChildObject = (JSONObject)jsonObject.get("LanguageLevels");
for (Map.Entry in jsonChildOBject.entrySet())
System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
Nos encantaría que puedieras dar visibilidad a este escrito si te valió la pena.