Java 使用Gson解析JSON文件

Java 使用Gson解析JSON文件,java,json,gson,Java,Json,Gson,我的JSON文件如下所示: { "inventory": [ ... ], "services": { "M": 2, "Moneypenny": 2, "intelligence": [ { "missions": [ ... ] },

我的JSON文件如下所示:

{
    "inventory": [ 
        ...
    ],
    "services": {
        "M": 2,
        "Moneypenny": 2,
        "intelligence": [
            {
                "missions": [
                    ...
                ]
            },
            {
                "missions": [
                    ...
                ]
            }
        ],
        "time": 25
    }
} 
我想解析JSON中的服务。 我通过使用JsonArray来解析清单。 我是这样做的服务部分:

JsonElement MinstancesJson = p.parse(file).getAsJsonObject().getAsJsonObject("services").get("M");
int Minstances = MinstancesJson.getAsInt();

但是我的程序在第一行就崩溃了。

这是在我的系统中完美运行的工作代码:

导入java.io.File;
导入java.io.FileNotFoundException;
导入java.io.FileReader;
导入com.google.gson.JsonElement;
导入com.google.gson.json异常;
导入com.google.gson.JsonParser;
导入com.google.gson.JsonSyntaxException;
公共类EntityName{
公共静态void main(字符串[]args)抛出JsonIOException、JsonSyntaxException、FileNotFoundException{
文件f=新文件(“其他//实体名称.json”);
JsonParser JsonParser=新的JsonParser();
JsonElement=jsonParser.parse(新文件读取器(f));
JsonElement元素=JsonElement.getAsJsonObject().getAsJsonObject(“服务”).get(“M”);
System.out.println(element.getAsInt());
}
}

这里entity-name.json包含给定的json。

您必须为json中的每个项创建一个类

因此,您将创建类
目录
、类
服务
、类
情报
和类
任务

例如,类
服务
如下所示:

public class Services {

    int m;
    int moneyPenny;
    List<Intelligence> intelligenceList;
    int time;

    //Constructor, getter and setter

}
公共类服务{
int m;
国际货币便士;
列表智能专家;
整数时间;
//构造函数、getter和setter
}
请注意,
intelligenceList
intellite
对象的列表


毕竟,使用
com.google.gson.gson
库,您可以通过
fromJson
方法解析json。通过这种方式,您将拥有一个
库存
对象。

“但是我的程序在第一行崩溃了”->错误是什么?@RobAu Exception在com.google.gson.internal.bind.TypeAdapters$29.read(TypeAdapters.java:732)在com.google.gson.internal.bind.TypeAdapters$29.read的线程“main”中出现异常(TypeAdapters.java:698)在com.google.gson.internal.Streams.parse(Streams.java:48)在com.google.gson.JsonParser.parseReader(JsonParser.java:85)在com.google.gson.JsonParser.parse(JsonParser.java:110)在bgu.spl.mics.application.App.main(App.java:44)上尝试拆分行并存储中间对象,然后您将找到exaclt哪个方法类导致error@RobAu它在这里崩溃:JsonObject jsonObj=p.parse(file).getAsJsonObject().getAsJsonObject(“服务”);然后使用变量赋值将该行拆分为多行。您将找到导致错误的方法。