3

您好我试图从 JsonObject 中获取元素的值。我正在使用带有 Gson 库的 java。

这是代码的相关部分:

String s = "http://maps.googleapis.com/maps/api/directions/json?origin=30.065634,31.209473&destination=29.984177,31.440052&sensor=false";
URL url = new URL(s);

BufferedReader r = new BufferedReader(new InputStreamReader(
    ((HttpURLConnection) url.openConnection()).getInputStream()));

JsonStreamParser jsp = new JsonStreamParser(r);

JsonParser jp = new JsonParser();

JsonElement jsonElement =  jp.parse(r);

JsonObject jsonObject = jsonElement.getAsJsonObject();

System.out.println(jsonObject.get("summary"));

这是Json的一部分:

"status": "OK",   "routes": [ {
    "summary": "Mehwar Al Moneeb",
    "legs": [ {
      "steps": [ {
        "travel_mode": "DRIVING",
        "start_location": {
          "lat": 30.0655100,
          "lng": 31.2096600
        },
        "end_location": {
          "lat": 30.0654400,
          "lng": 31.2096000
        },
        "polyline": {
          "points": "mdovDksn}DLJ",
          "levels": "BB"
        },
        "duration": {
          "value": 1,
          "text": "1 min"
        },
        "html_instructions": "Head \u003cb\u003esouthwest\u003c/b\u003e on \u003cb\u003eOmar Toson\u003c/b\u003e toward \u003cb\u003eMohammed Roshdi\u003c/b\u003e",
        "distance": {
          "value": 9,
          "text": "9 m"
        }
      }

当我得到顶部元素“路由”它很好并打印它显示元素内部的内容但是当我尝试例如获取元素“摘要”时,返回为空,这就是输出中显示的内容,所以随后我无法获得它的价值。怎么了?如何获得任何 JsonElement 的值?请尽快回复我。提前致谢。

4

1 回答 1

0

Routes 是一个 JavaScript 数组。摘要是该数组中第一个对象的属性,因此您需要使用jsonObject.getAsJsonArray("routes").get(0).get("summary");或等效。我没有使用过你的 Java 库,但是 JS 代码是jsonObject.routes[0].summary

编辑:查找GSON 文档并更新代码。

于 2010-12-13T02:02:18.743 回答