使用 Gson for Java 解析 JSON

新手上路,请多包涵

我想解析来自 String 类型的 JSON 数据。我正在使用 谷歌 Gson

我有:

 jsonLine = "
{
 "data": {
  "translations": [
   {
    "translatedText": "Hello world"
   }
  ]
 }
}
";

我的课是:

 public class JsonParsing{

   public void parse(String jsonLine) {

      // there I would like to get String "Hello world"

   }

}

原文由 Martynas 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 629
2 个回答

这是执行此操作的简单代码,我避免了所有检查,但这是主要思想。

  public String parse(String jsonLine) {
    JsonElement jelement = new JsonParser().parse(jsonLine);
    JsonObject  jobject = jelement.getAsJsonObject();
    jobject = jobject.getAsJsonObject("data");
    JsonArray jarray = jobject.getAsJsonArray("translations");
    jobject = jarray.get(0).getAsJsonObject();
    String result = jobject.get("translatedText").getAsString();
    return result;
}

为了使使用更通用 - 您会发现 Gson 的 javadocs 非常清晰且很有帮助。

原文由 MByD 发布,翻译遵循 CC BY-SA 3.0 许可协议

在我的第一个 gson 应用程序中,我避免使用额外的类来捕获值,主要是因为我使用 json 来处理配置问题

尽管缺乏信息(甚至 gson 页面),这就是我发现和使用的:

从…开始

Map jsonJavaRootObject = new Gson().fromJson("{/*whatever your mega complex object*/}", Map.class)

每次 gson 看到 {} 时,它都会创建一个 Map(实际上是一个 gson StringMap )

每次 gson 看到一个 “,它就创建一个 String

每次 gson 看到一个数字时,它都会创建一个 Double

每次 gson 看到一个 [],它创建一个 ArrayList

您可以利用这些事实(综合)为您谋利

最后这是制作东西的代码

        Map<String, Object> javaRootMapObject = new Gson().fromJson(jsonLine, Map.class);

    System.out.println(
        (
            (Map)
            (
                (List)
                (
                    (Map)
                    (
                        javaRootMapObject.get("data")
                    )
                 ).get("translations")
            ).get(0)
        ).get("translatedText")
    );

原文由 Jorge Sanchez 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题