我有一个简单的 JSON 文件,我想使用 gson 和 Java 解析 (units.json):
{"user_name": "happyman", "status": {"hp": 20, "karma": 7, "mp": 10}, "gold": 5.25,}
{"user_name": "sadman", "status": {"hp": 10, "karma": 2, "mp": 6}, "gold": 0.5,}
...
我遇到的问题是,我该如何解析这个文件,因为它不是数组格式?
目前我有一个 Filereader 到 JsonReader 调用的路径
FileReader fileReader = new FileReader(jsonFilePath);
JsonReader jsonReader = new JsonReader(fileReader);
jsonReader.beginObject();
while (jsonReader.hasNext()) {
String name = jsonReader.nextName();
if (name.equals("user_name")) {
System.out.println("user_id: "+jsonReader.nextString());
}
//...checks for other equals
但是,使用这段代码,我只能得到第一行。 我感觉这与“hasNext()”不是 while 循环中的正确方法调用有关。
感谢您的帮助!谢谢。
最佳答案
您可以将此代码与 GSON 库一起使用:
ObjectMapper mapr = new ObjectMapper();
Map<String,Object> map = mapr.readValue(jsonString, Map.class);
或
public class Units {
@JsonProperty("user_name")
public String user_name;
@JsonProperty("status")
public List<Attr> attrs;
..
}
public class Attr {
@JsonProperty("hp")
public String hp;
@JsonProperty("karma")
public String karma;
@JsonProperty("mp")
public String mp;
}
ObjectMapper mapr = new ObjectMapper();
Units unit = mapr.readValue(jsonString, Units.class);
对于两者,您都可以使用 jsonString 来定义文件中的每个 json 单元。
关于java - 反序列化 json 和分隔换行符 NDJ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16068283/