java - 如何在 JSON 中获取子元素的父元素名称?
问题描述
我有一些动态 JSON,在处理之前我不知道完整的结构。
但是,我知道 JSON 可能包含某些感兴趣的嵌套元素。
e. 对于这个示例有效载荷
{
"id": "3334343",
"contractor": {
"ppsNo": "123334"
},
"fullTimeStaff":{
"ppsNo": "343434"
}
}
我想找到包含名为ppsNo的元素的所有外部元素的名称。
我曾尝试使用root.findParents("ppsNo")但这给了我 ppsNo 元素,而不是我感兴趣的承包商和fullTimeStaff的外部(父)元素。
ObjectMapper objectMapper = new ObjectMapper();
String payload = "{\n" +
" \"id\": \"3334343\",\n" +
" \"contractor\": {\n" +
" \"ppsNo\": \"123334\"\n" +
" },\n" +
" \"fullTimeStaff\":{\n" +
" \"ppsNo\": \"123334\"\n" +
" }\n" +
"}";
JsonNode root = objectMapper.readTree(payload);
List<JsonNode> nodes = root.findParents("ppsNo");
返回的 JsonNodes 是{"ppsNo":"123334"}
元素而不是外部包含节点(“contractor”和“fullTimeStaff”)。
有没有办法做到这一点?我曾研究过使用 JSON 路径,但我看不到一种明显的方法来使用它来获取真正的父(包含/外部)元素。
我在这个例子中使用杰克逊,但我对替代品持开放态度
解决方案
我没有花很多时间来编写代码。
您正在寻找的表达式Regex
是\{\n "ppsNo": "\w+"\n }
(您使用链接https://regex101.com对其进行测试)。你应该做的是当你遇到这个表达式时开始倒退并阅读“”中的第一个单词。我希望它对你有帮助
推荐阅读
- wordpress - Arabic is not typing as "right to left" when it's editing in WPBakery
- arrays - How to get missing Computernames in a Active Directory OU
- sorting - 日期排序弹性搜索
- javascript - dunglas mercure 服务器/javascript EventSource withCredentials:mercureAutorisation cookie 未传输
- c# - System.DllNotFoundException - 无法加载 DLL 'wkhtmltox.dll':访问被拒绝
- ios - 在特定时区安排 UILocalNotification
- reactjs - 酶/玩笑:组件(...):渲染没有返回任何内容。这通常意味着缺少 return 语句。或者,不渲染任何内容,返回 null
- python - Django站点中的视频文件如何观看电影
- sql - 我正在尝试计算有多少传输时间超过 30 分钟,并且此错误不断出现
- python - mandelbrot 集在 2^47 左右变焦时变得模糊