我正在使用一个 JSON Web API,它将数据中的所有 &、"、'、< 和 > 字符转换为 &、" 等。看起来它正在使用 PHP 的 htmlspecialchars()。
我有一些处理这个问题的 PHP 代码,比如:
function unescape_special_chars(&$value, $key) {
$value = html_entity_decode($value, ENT_QUOTES, 'UTF-8');
}
...
$response = json_decode($response->getBody(), true);
// the data has been run through htmlspecialchars(), we must undo this
array_walk_recursive($response, 'unescape_special_chars');
这很好,我不知道也不关心返回的 JSON 对象的结构是什么,但是上面的内容会遍历并修复它。
我需要将此代码重写为 Java,并且我正在使用 Play!框架。我对 Play 很陌生,对 Java 很生疏。到目前为止,这是我在 Play 应用程序中的 util 类中的内容:
protected Promise<JsonNode> consumeApi() throws Exception {
Promise<Response> resultsP = WS.url(REST_URL).post("");
Promise<JsonNode> jsonNodeP = resultsP.map(new Function<Response, JsonNode>() {
public JsonNode apply(Response response) throws Throwable {
// Here I need to "array_walk_recursive" in Java/Jackson
return response.asJson();
}
});
return jsonNodeP;
}
我怎样才能在 Java 和/或 Jackson 中做类似的事情?我有一种感觉,我应该能够遍历 JsonNode 提供的树模型,但我可以在正确的方向上使用一些建议或指针。谢谢。