【发布时间】:2010-06-08 19:55:50
【问题描述】:
简单的情况-
- 读取一个json文件
- 发现所有键值对
- 比较键值对
我尝试了来自 json.org 的包 gson,但似乎无法做到。
有人可以提供一个清晰的 Java 示例,说明如何获取文件、读取文件、以 json 对象结尾,我可以从中获取键/值对。
考虑一下:
private void runThroughJson(JsonObject jsonObject) {
for (final Entry<String, JsonElement> entry : jsonObject.entrySet()) {
final String key = entry.getKey();
final JsonElement value = entry.getValue();
System.out.println(key + " - " + value);
if (value.isJsonObject()) {
runThroughJson(value.getAsJsonObject());
} else {
int ix = value.getAsString().indexOf('[');
int ig = value.getAsString().lastIndexOf(']');
System.out.println(ix);
System.out.println(ig);
String a = value.getAsString().substring(ix, ig);
JsonElement jsonElement = parser.parse(a);
runThroughJson(jsonElement.getAsJsonObject());
}
}
}
从逻辑上讲,这似乎没问题,但是,我得到了一个例外:
Exception in thread "main" java.lang.IllegalStateException
at com.google.gson.JsonArray.getAsString(JsonArray.java:133)
at com.cme.esg.bk.TryGson.runThroughJson(TryGson.java:46)
at com.cme.esg.bk.TryGson.runThroughJson(TryGson.java:44)
at com.cme.esg.bk.TryGson.goForIt(TryGson.java:32)
at com.cme.esg.bk.TryGson.main(TryGson.java:16)
你能告诉我我失踪了吗。
【问题讨论】: