我刚开始使用javax.json包.我知道如果我知道我的JSON字符串的结构,如何从Java 8中的JSON对象中提取值.但是我不知道字符串的结构怎么样?问题:如何确定节点是否有子节点?
要读取值,我只需要使用"get*"方法 - 它工作正常,但是没有像"checkIfArray"或"checkIfObject"这样的方法来检查我是否可以使用像"getString"这样的方法...
在javax.json包中,两种可用类型都支持空白检查,因为它们都实现了java.collection接口:
JsonObject是一个java.util.Map<String, JsonValue>.因此,可以通过简单地调用isEmpty()方法来检查此类对象是否包含任何值.
JsonArray是一个java.util.List<JsonValue>.结果,再次 - 可以通过调用isEmpty()方法来检查数组是否为空.
要JsonStructure在标记所有空节点时遍历s 树,可以使用此辅助方法:
boolean isValueEmpty(JsonValue v) {
if (v == null) {
return true; // or you may throw an exception, for example
}
switch(v.getValueType()) {
case NULL:
return true; // same as with Java null, we assume that it is Empty
case ARRAY:
return ((JsonArray) v).isEmpty();
// additionally, you can say that empty array is array with only empty elements
// this means a check like this:
// return ((JsonArray v).stream().allMatch(isValueEmpty); // recurse
case OBJECT:
return ((JsonObject v).isEmpty();
case STRING:
// optionally: if you want to treat '' as empty
return ((JsonString v).getString().isEmpty();
default:
return false; // to my knowledge, no other Json types can be empty
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10029 次 |
| 最近记录: |