从InputStreamReader

时间:2015-07-03 09:08:12

标签: java json

我想从URL的内容创建一个JSONObject对象, 所以我从谷歌API获取了URL内容,结果是:

"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 个答案:

答案 0 :(得分:2)

完成!

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

答案 1 :(得分: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()));