2015-07-03 3 views
0

Я хочу, чтобы создать объект JSONObject от содержимого URL, поэтому я получаю содержание URL от API, Google, это результат:создания JSONObject из InputStreamReader

"results" : [ 
     { 
     "address_components" : [ 
      { 
       "long_name" : "29", 
       "short_name" : "29", 
       "types" : [ "street_number" ] 
      }, 
      { 
       "long_name" : "Jean", 
       "short_name" : "Jean", 
       "types" : [ "route" ] 
      }, 
      { 
       "long_name" : "Toulouse", 
       "short_name" : "Toulouse", 
       "types" : [ "locality", "political" ] 
      }, 
      { 
       "long_name" : "Haute-Garonne", 
       "short_name" : "31", 
       "types" : [ "administrative_area_level_2", "political" ] 
      }, 
      { 
       "long_name" : "Midi", 
       "short_name" : "Midi", 
       "types" : [ "administrative_area_level_1", "political" ] 
      }, 
      { 
       "long_name" : "France", 
       "short_name" : "FR", 
       "types" : [ "country", "political" ] 
      }, 
      { 
       "long_name" : "31000", 
       "short_name" : "31000", 
       "types" : [ "postal_code" ] 
      } 
     ], 
     "formatted_address" : "99 Jean , 31900 Toulouse, France", 
     "geometry" : { 
      "location" : { 
       "lat" : 43.6069496, 
       "lng" : 1.4498134 
      }, 
      "location_type" : "ROOFTOP", 
      "viewport" : { 
       "northeast" : { 
        "lat" : 43.6082985802915, 
        "lng" : 1.451162380291502 
       }, 
       "southwest" : { 
        "lat" : 43.6056006197085, 
        "lng" : 1.448464419708498 
       } 
      } 
     }, 
     "place_id" : "ChIJTSvW45i8rhIRu8OEgnpnZMY", 
     "types" : [ "street_address" ] 
     } 
    ], 
    "status" : "OK" 
} 

Я хотел бы создать JSONObject от этого содержания, что-то вроде

JSONObject obj = JSONObject.fromObject(urlConnection.getInputStream()); 

но проверять размер этого объекта 0

ответ

2

Вам необходимо прочитать содержимое этого InputStream в String, вы не можете использовать его прямо таким образом.

Читайте InputStream с чем-то похожее на это:

public static String slurp(InputStream is){ 
    BufferedReader br = new BufferedReader(new InputStreamReader(is)); 
    StringBuilder sb = new StringBuilder(); 
    String line; 
    while ((line = br.readLine()) != null) { 
     sb.append(line+"\n"); 
    } 
    br.close(); 
    return sb.toString(); 
} 

И затем использовать его, чтобы получить JSONObject:

JSONObject obj = JSONObject.fromObject(slurp(urlConnection.getInputStream())); 
2

Готово!

JSONParser parser = new JSONParser(); 
Object obj = parser.parse(new InputStreamReader(inputStream)); 
JSONObject jsonObject = (JSONObject) obj; 
+1

Ouch, слишком медленно! Btw, парсер org.json довольно медленный, я рекомендую использовать что-то другое, например, GSON или Jackson, если вам нужно что-то быстрее. –

Смежные вопросы