Java 使用Gson解析JSON文件
我的JSON文件如下所示:Java 使用Gson解析JSON文件,java,json,gson,Java,Json,Gson,我的JSON文件如下所示: { "inventory": [ ... ], "services": { "M": 2, "Moneypenny": 2, "intelligence": [ { "missions": [ ... ] },
{
"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(“服务”);然后使用变量赋值将该行拆分为多行。您将找到导致错误的方法。