获取给定Java中JSON路径/JSON指针的JSON文件的行号
我正在寻找一种方法来解析特定节点的JSON文件,并在文件中获取该节点的行号。我想使用Jayway JSONPath库来支持扩展的JSONPath查询
例如(来自jsonpath.com),这里有一些JSON:
{
"firstName": "John",
"lastName" : "doe",
"age" : 26,
"address" : {
"streetAddress": "naist street",
"city" : "Nara",
"postalCode" : "630-0192"
},
"phoneNumbers": [
{
"type" : "iPhone",
"number": "0123-4567-8888"
},
{
"type" : "home",
"number": "0123-4567-8910"
}
]
}
这里有一个jsonPath:
$.phoneNumbers.[?(@.type=='iPhone')]
我想用一种方式说这个节点在json文件的第11行。我不知道json内容可能是什么,也不知道jsonPath是什么。两者都是动态的
到目前为止,我已经尝试将json解析为一棵树,并将其遍历到节点以获取解析器的当前位置,但是解析器必须始终在jsonPath执行之前运行到文件的末尾。还有其他想法吗
# 1 楼答案
我想您可以使用漂亮的json打印版本,它应该返回带有换行符的json格式,然后从那里开始工作
# 2 楼答案
我最终找到了一个使用Jackson的JsonFactory和JsonParser的解决方案。至少可以这么说,这是一个kludge-y,但它使用JsonParser对其解析器行号的了解来获取JsonNode的位置,并且工作得非常好
我将把代码粘贴到这里,但是代码也可以在watchtower github上找到
主叫班级:
CustomJsonNodeFactory。爪哇
CustomParserFactory。java(请注意,这会消除线程安全性,这可能是一件大事):