JSON 解析使用 Gson for Java

2022-08-31 07:03:05

我想从JSON解析数据,这是类型。我正在使用Google GsonString

我有:

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

我的班级是:

public class JsonParsing{

   public void parse(String jsonLine) {

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

   }

}

答案 1

这是一个简单的代码来做到这一点,我避免了所有检查,但这是主要思想。

 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非常清晰和有用。


答案 2

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

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

起价

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

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

每次 gson 看到一个 '' 时,它就会创建一个字符串

每当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")
    );