android - com.google.gson.JsonParseException : Failed parsing JSON source: java. io.BufferedReader 到 Json - 对这个问题感到困惑

标签 android gson

我正在尝试在 Android 应用程序中使用 gson 解析 json 对象,测试在模拟器中顺利通过,而我使用的是实际设备,问题开始了 我得到如下异常

.....: com.google.gson.JsonParseException: Failed parsing JSON source: java.io.BufferedReader@44848f38 to Json
......: print stack Failed parsing JSON source: java.io.BufferedReader@44848f38 to Json
.......:com.google.gson.JsonParseException: Failed parsing JSON source: java.io.BufferedReader@44848f38 to Json
.......:    at com.google.gson.JsonParser.parse(JsonParser.java:59)
........:    at com...xx..allmenus.DiningDetail$3.run(DiningDetail.java:361)
........: Caused by: com.google.gson.ParseException: Encountered " <IDENTIFIER_SANS_EXPONENT> "HTTP "" at line 1, column 1.
07-29 11:33:55.186: WARN/System.err(2110): Was expecting one of:
07-29 11:33:55.186: WARN/System.err(2110):     <EOF> 
07-29 11:33:55.186: WARN/System.err(2110):     <DIGITS> ...
07-29 11:33:55.186: WARN/System.err(2110):     "null" ...
07-29 11:33:55.186: WARN/System.err(2110):     "NaN" ...
07-29 11:33:55.194: WARN/System.err(2110):     "Infinity" ...
07-29 11:33:55.194: WARN/System.err(2110):     <BOOLEAN> ...
07-29 11:33:55.194: WARN/System.err(2110):     <SINGLE_QUOTE_LITERAL> ...
07-29 11:33:55.194: WARN/System.err(2110):     <DOUBLE_QUOTE_LITERAL> ...
07-29 11:33:55.202: WARN/System.err(2110):     ")]}\'\n" ...
07-29 11:33:55.210: WARN/System.err(2110):     "{" ...
07-29 11:33:55.210: WARN/System.err(2110):     "[" ...
07-29 11:33:55.217: WARN/System.err(2110):     "-" ...
07-29 11:33:55.217: WARN/System.err(2110):     
07-29 11:33:55.217: WARN/System.err(2110):     at   com.google.gson.JsonParserJavacc.generateParseException(JsonParserJavacc.java:705)
......:   at com.google.gson.JsonParserJavacc.jj_consume_token(JsonParserJavacc.java:587)
......:     at com.google.gson.JsonParserJavacc.parse(JsonParserJavacc.java:62)
......:    at com.google.gson.JsonParser.parse(JsonParser.java:54)
.....:     ... 1 more

请提出解决方案,我使用的是 gson 1.4 版本。我使用的代码是

            URLsource = new URL("http://.........);
      in = new BufferedReader(new UnicodeReader(URLsource.openStream(), "UTF-8"));
       jse = new JsonParser().parse(in);
    in.close(); 
            JsonArray info = jse.getAsJsonObject().getAsJsonArray("info");

在浏览器中 url 的 o/p 是

    {"info":[{"restaurant_id":"","name":"Vie de France","campus_id":"","address":"600 Maryland Ave SW","city":"WASHINGTON","state":"DC","neighborhood":"","neighborhood_urlname":"","zipcode":"20024","average_entree":"6.29","chain_id":"994","phone":"(202) 554-7870","is_voicestar":"0","menu_type":"1","url":"","logo":"","details":"","latitude":"38.886877","longitude":"-77.019913","properties":"rmwa","reviews":"y","yelp_phone":"2025547870","reservation_id":"","reservation_url":"","price":"","cross_street":"","public_transit":"","restaurant_description":"","payment_methods":"","hours":"","next_open":"","restaurant_status":"","is_preorder":"","citysearch_hours":" ","minimum_order":"","minimum_order_2":"","delivery_rate":"","delivery_time":"","delivery_info":"","misc_info":"","delivery_charge":"","delivery_charge_2":"","is_pickup":"","is_delivery":"","minimum_tip_amount":"","minimum_tip_percent":"","restaurant_account_id":"","urlname":"\/dc\/washington\/239256-vie-de-france\/","facebook_fan_page":"","twitter_page":"","is_dz":"0","loyalty":"","delivery_hours":""}],"cuisines":[{"mastercuisineid":"143","cuisine":"American","urlname":"american"},{"mastercuisineid":"90","cuisine":"Bakery & Pastries","urlname":"bakery-pastries"},{"mastercuisineid":"57","cuisine":"French","urlname":"french"}]}

谢谢

最佳答案

如果您的 JSON 在服务器上并且您通过 HTTP 请求访问它,您只需要解析内容,而不需要解析带有 header 的整个文件。
尝试做一个 HTTP 客户端,使用 getResponse.getEntity 或 getResponse.getContent,然后在其中之一上使用您的解析器。

关于android - com.google.gson.JsonParseException : Failed parsing JSON source: java. io.BufferedReader 到 Json - 对这个问题感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3360007/

相关文章:

java - 如何修复 Android 中指定为非空的参数为空错误

android - 无法在 android api 23 上打开位置?

java - Gson:有没有办法使用 GSON 只解析特定的内部 JSON 列表?

java - GSON 将数组的数组解析为 Java 对象数组

java - Gson.toString() 给出错误 "IllegalArgumentException: multiple JSON fields named mPaint"

java - Android Json/Gson问题

android - 带有文本的球形动画,用于在 Android 应用程序中使用标签云 [News Republic]

android - 通过获取 mediaPlayer 的幅度来制作进度条动画

android - 如何与三个表建立关系,SugarOrm

java - Gson.jar 不引用 Maven 依赖项,即使它已由 spring-boot 管理