GSON:如何从Json获得不区分大小写的元素?

JSON对象包含jsonKey传递给方法的内容时,下面显示的代码可以很好地工作。我想知道…是否有办法获取分配给键的不区分大小写表示的值?

public String getOutputEventDescription(JsonElement outputEvent) throws ParserException {

return retrieveString(outputEvent, DESCRIPTION);

}

无论DESCRIPTION被定义为“ Description”,“ description”还是“ DeScRipTIOn”,它都应该起作用

protected String retrieveString(JsonElement e, String jsonKey) throws ParserException {

JsonElement value = e.getAsJsonObject().get(jsonKey);

if (value == null) {

throw new ParserException("Key not found: " + jsonKey);

}

if (value.getAsString().trim().isEmpty()) {

throw new ParserException("Key is empty: " + jsonKey);

}

return e.getAsJsonObject().get(jsonKey).getAsString();

}

回答:

不幸的是,当前的实现似乎没有办法做到这一点。如果查看Gson源代码,更具体地说是JsonObject实现,您将看到基础数据结构是链接的哈希映射。get调用仅调用地图上的get,后者依次使用哈希码和键的equals方法查找要查找的对象。

唯一的解决方法是为您的密钥强制执行一些命名约定。最简单的方法是将所有键都强制转换为小写。如果需要混合大小写的键,那么您将面临更多困难,并且需要编写更复杂的算法来转换键,而不是简单地调用jsonKey.toLowerCase()。

以上是 GSON:如何从Json获得不区分大小写的元素? 的全部内容, 来源链接: utcz.com/qa/425092.html

回到顶部