我正在尝试一些代码,我想将从 json 中获取的字符串与某些值进行比较。然而 if 语句永远不会触发。我已经确认实例的值设置正确,并且可以打印出来。
//MAKING CLASSES
Collection collection = new ArrayList();
Event ev = new Event();
ev.name = "sven";
ev.source = "src10";
Event2 ev2 = new Event2();
ev2.name = "type";
ev2.data = "somedata";
collection.add(ev);
collection.add(ev2);
//MAKING A BUNCH OF CLASSES TO JSON
Gson gson = new Gson();
String json = gson.toJson(collection);
JsonParser parser = new JsonParser();
JsonArray array = parser.parse(json).getAsJsonArray();
//JSON TO JAVA
for (int i = 0; i < array.size(); i++) {
JsonObject nameObject = array.get(i).getAsJsonObject();
String nameString = nameObject.get("name").toString();
if (nameString.equals("sven")) {
System.out.println("this is sven");
Event event = gson.fromJson(array.get(i), Event.class);
}
else if (nameString.equals("type")) {
System.out.println("this is type");
Event2 event2 = gson.fromJson(array.get(i), Event2.class);
}
else{
System.out.println("nothing");
}
}
最佳答案
根据 Gson API,您对 'nameObject.get("name")' 的调用将返回 JsonElement 。这意味着您应该使用“getAsString()”方法而不是“toString()”:
String nameString = nameObject.get("name").getAsString();
“toString()”方法(通常)是为了调试目的而设计的。并且在程序逻辑中应该非常小心地使用。
关于java - .json 字符串中的.equal?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26565468/