我有json,我需要从它的一个节点中获取原始的json,它包含所有原始字符,包括换行符和空格。例如:
{
"auth": {
"hash": "f9d876df71dfc72810a497dc38d1c1f467c720d8171da5e2c974647978c645ae"
},
"request": {
"p1": 1885,
"p2": [
"test"
],
"p3": {
"in": 10
}
}
}
我需要使用原始json以String形式获取请求节点的值,如下所示:
{
"p1": 1885,
"p2": [
"test"
],
"p3": {
"in": 10
}
}
我试试:
String rawRequest = null;
JsonFactory jsonFactory = new JsonFactory();
JsonParser jsonParser = jsonFactory.createParser(json)
JsonToken jsonToken = jsonParser.nextToken();
while (jsonToken != null) {
if (jsonToken == JsonToken.FIELD_NAME) {
String fieldName = jsonParser.getCurrentName();
if ("request".equals(fieldName)) {
jsonParser.nextToken();
rawRequest = jsonParser.getValueAsString();
break;
}
}
jsonToken = jsonParser.nextToken();
}
但是它不工作。我该怎么做呢?在极端的情况下,甚至可以使用第三方库。
2条答案
按热度按时间eanckbw91#
我能做的解决方案如下:
看起来效率很低,但我不想写自己的解析器。缺点是位置搜索。在添加回车和换行符的情况下。
1wnzp6jl2#
您可以使用Jackson的
ObjectMapper
来读取原始json,然后提取请求属性,如要使其正常工作,您需要
jackson-databind
和jackson-annotations
依赖项。