java - 如何使用 GSON 从此 JSON 文件获取文本?

标签 java json gson

我使用 GSON 来解析这个 JSON 文件:

{
    "database" : {
        "source" : "google",
        "items" : [
            {"title" : "hello world",
            "id" : "id_hello_world"},

            {"title" : "goodbye world",
            "id" : "id_goodbye_world"}
        ]
    }
}

我读入String jsonLine

我试图解析它并输出所有值,但我在

处收到ClassCastException

JsonObject source = database.getAsJsonObject("source") 行。

我认为我搜索的数据是错误的。我用它来搜索和输出:

        JsonElement jelement = new JsonParser().parse(jsonLine);

        JsonObject jobject = (JsonObject) jelement;

        JsonObject database = jobject.getAsJsonObject("database"); //Get Database
        JsonObject source = database.getAsJsonObject("source"); //Get Source
        System.out.println("Source: " + source.toString()); //Print source

        JsonArray items = database.getAsJsonArray("items"); //Get items array

        for(int i=0; i< items.size(); i++){ //for every item
            JsonObject item = (JsonObject) items.get(i); //Select item i
            JsonObject title = (JsonObject) item.getAsJsonObject("title");
            JsonObject id = (JsonObject) item.getAsJsonObject("id");
            System.out.println("Item " + i + " title : " + title.toString() + ", id : " + id.toString());
        }

如果有人可以纠正我的代码那就完美了。我知道还有其他更简单的方法可以使用 GSON.fromJSON(jsonLine, Wrapper.class) 来做到这一点,但我也试图学习这样做。感谢您的帮助!

最佳答案

在使用 Gson 方法之前,创建模板结构:

class Item{
  private String item = "";
  private String id = ""; // for sure you can use 'int'
}

public class DataBase{
  private  List<Item> items = null;
  private String source = "";
}

现在是你的主课:

public class YourClass{
 private DataBase database = "";

 ....

 database  = gson.fromJson(yourString, YourClass.class);

...
}

不要忘记try/catch包装器

享受

关于java - 如何使用 GSON 从此 JSON 文件获取文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18419698/

相关文章:

Java 编程要求

json - 修改 VBA JSON 文件

c# - 反序列化 JSON 时如何将 ObjectCreationHandling.Replace 应用于选定的属性?

java - Gson:从 Json 字符串实例化接口(interface)

java - 将 JSON 字符串转换为 Java 对象 : Java

java - 词法字符串排序查询

java - 如何检查当前时间是否在特定范围内

java - 如果对象在Elastic search中具有对象列表,那么我们可以在一个文档中对数据进行排序吗?我还应该对嵌套文档进行排序

jquery - 为什么我的 YQL 查询在 jQuery 中返回空结果,而相同的 YQL 查询在 YQL 控制台返回正值?

java - 如何使用 GSON 忽略对象列表中对象内部的 transient 字段定义