我目前正在尝试从JSON数组中加载无限量的变量,并且不知道如何执行此操作。
我的JSON文件如下:
{"commands": [
{"cmd": "hello", "params": "%u", "output": "hello %s!"},
{"cmd": "ping", "params": "", "output": "pong!"},
{"cmd": "test", "params": "%ul", "output": "test %s.."}
]}
我正在使用Google的GSON库。
我是否必须手动解析每个命令,或者有没有办法通过gson.fromJson()
实现此目的?
答案 0 :(得分:3)
您可以使用包含数组或Command对象集合的包装器对象作为反序列化过程的模型:
<强> Command.java 强>
public class Command{
private String cmd;
private String params;
private String output;
// Getters and setters
}
<强> CommandWrapper.java 强>
public class CommandWrapper{
private List<Command> commands;
// Getters and setters
}
然后在课堂上你可以用这种方式反序列化JSON:
Gson gson = new Gson();
CommandWrapper wrapper = gson.fromJson(myInputJson, CommandWrapper.class);
将您的命令作为列表。
答案 1 :(得分:2)
如果数字真的无限期;您可能希望从输入中创建Java8 流;因为流可以(理论上)没有结束。
但是,您可能只需返回一个特定类别的List,它可以很好地“包裹”您文件中的JSON数据。