2014-01-03 2 views
-1

Я много раз пытался декодировать вложенную строку JSON, состоящую из вложенного массива, я использовал GSON() для этого. и это сработало, но проблема об объектах внутри этого массива не декодироваться из JSON, поэтому я нужна ваша помощь:Как декодировать эту вложенную строку JSON?

JSON Строка:

{ "data" : { "current_condition" : [ { "cloudcover" : "75", 
      "humidity" : "87", 
      "observation_time" : "03:16 AM", 
      "precipMM" : "1.5", 
      "pressure" : "991", 
      "temp_C" : "11", 
      "temp_F" : "52", 
      "visibility" : "7", 
      "weatherCode" : "293", 
      "weatherDesc" : [ { "value" : "Patchy light rain" } ], 
      "weatherIconUrl" : [ { "value" : "http://cdn.worldweatheronline.net/images/wsymbols01_png_64/wsymbol_0033_cloudy_with_light_rain_night.png" } ], 
      "winddir16Point" : "SSW", 
      "winddirDegree" : "210", 
      "windspeedKmph" : "30", 
      "windspeedMiles" : "19" 
      } ], 
     "request" : [ { "query" : "London, United Kingdom", 
      "type" : "City" 
      } ], 
     "weather" : [ { "date" : "2014-01-03", 
      "precipMM" : "6.9", 
      "tempMaxC" : "10", 
      "tempMaxF" : "50", 
      "tempMinC" : "5", 
      "tempMinF" : "41", 
      "weatherCode" : "293", 
      "weatherDesc" : [ { "value" : "Patchy light rain" } ], 
      "weatherIconUrl" : [ { "value" : "http://cdn.worldweatheronline.net/images/wsymbols01_png_64/wsymbol_0017_cloudy_with_light_rain.png" } ], 
      "winddir16Point" : "SW", 
      "winddirDegree" : "220", 
      "winddirection" : "SW", 
      "windspeedKmph" : "33", 
      "windspeedMiles" : "21" 
      } ] 
    } } 

мой код, чтобы декодировать этот JSON:

HashMap HashMap = new Gson().fromJson(json, HashMap.class); 

и его вывод:

{данных = {запрос = [{запрос = Лондон, Великобритания, тип = Город}], current_condition = [{cloudcover = 75, влажность = 87, время наблюдения = 03: 16 AM, пределMM = 1,5, давление = 991, temp_C = 11, temp_F = 52, видимость = 7, weatherCode = 293, weatherDesc = [{ value = Patchy light rain}], weatherIconUrl = [{value = http://cdn.worldweatheronline.net/images/wsymbols01_png_64/wsymbol_0033_cloudy_with_light_rain_night.png}], winddir16Point = SSW, winddirDegree = 210, windspeedKmph = 30, windspeedMiles = 19}], weather = [{date = 2014-01-03 , precipMM = 6,9, tempMaxC = 10, tempMaxF = 50, tempMinC = 5, tempMinF = 41, weatherCode = 293, weatherDesc = [{значение = Очаговое дождь}], weatherIconUrl = [{значение = http://cdn.worldweatheronline.net/images/wsymbols01_png_64/wsymbol_0017_cloudy_with_light_rain.png}], winddir16Point = SW, winddirDegree = 220, winddirection = SW, windspeedKmph = 33, windspeedMiles = 21}]}}

так я хочу идеальный метод, чтобы дать мне возможность войти в этом вложенный массив HashMap и это значение, потому что мой метод не дает мне возможность вызывать вложенные значения из этого массива

Спасибо,

+0

Ваш код должен работать нормально; вам просто нужно кэшировать внутренние объекты в HashMap. – SLaks

+0

См. Json.org для синтаксиса JSON. Это довольно легко понять. –

+1

Для доступа к внутренним объектам вы просто «очищаете лук», слой за раз. «data» дает вам карту, с которой вы можете получить доступ к «current_condition». Это создает список, содержащий один элемент, карту, содержащую «облачную», «влажность», «время наблюдения» и т. Д. –

ответ

0

Он работал после того, как я сделал этот метод:

Type type = new TypeToken< HashMap<String, HashMap<String, ArrayList<com.google.gson.internal.LinkedTreeMap>>>>() {}.getType(); 

HashMap<String, HashMap<String, ArrayList<com.google.gson.internal.LinkedTreeMap>>> hashMap = new Gson().fromJson(API.getJSON(), type);  

com.google.gson.internal.LinkedTreeMap hash = hashMap.get("data").get("current_condition").get(0); 

System.out.println(" "+hash.get("humidity")+"  "); 

я знаю, что ваши ответы и мой первый метод истинны, но, как я сказал вам, что я хочу, чтобы ввести запись вложенный список массива внутри этого Json

1

как строка представляет собой HashMap внутри другого Hashmap вы можете использовать некоторые вещи, как,

HashMap<String, HashMap> hashMap = new Gson().fromJson(json, HashMap.class); 
Смежные вопросы