网站首页 > 开源技术 正文
问题场景及解决
日常开发场景中,经常会遇到大Json,对象多而且嵌套深,如何能快速找到某个属性所在层级呢?
- 通过搜索文本,确认字段位置?
- 通过JsonPath 来输出路径?
两者都不能很好地解决问题,相对好的方案是
- 通过搜索找到指定文本
- 通过查看Breadcrumb确认最终的字符的位置关系
Breadcrumb实现
知道面包屑这个名称Breadcrumb,找到跟Json相关的面包屑对象
com.intellij.json.breadcrumbs.JsonBreadcrumbsProvider
借助arthas进行stack
stack com.intellij.json.breadcrumbs.JsonBreadcrumbsProvider * -n 5
猜测其中的关键类
1. com.intellij.xml.breadcrumbs.BreadcrumbsXmlWrapper.computeCrumbs(BreadcrumbsXmlWrapper.java:33)
验证猜测,最终只需要提供editor, 及添加该 wrapper的位置即可。
// 生成面包屑包装对象
wrapper = new BreadcrumbsXmlWrapper(editor);
registerWrapper(fileEditorManager, fileEditor, wrapper);
// 面包屑添加的方式
private static void add(@NotNull FileEditorManager manager, @NotNull FileEditor editor, @NotNull BreadcrumbsXmlWrapper wrapper) {
if (wrapper.breadcrumbs.above) {
manager.addTopComponent(editor, wrapper);
}
else {
manager.addBottomComponent(editor, wrapper);
}
}
最后IDEA插件SequenceOutline的实现为
// SequenceOutline中的实现, sourceEditor(jsonEditor)
BreadcrumbsXmlWrapper wrapper = new BreadcrumbsXmlWrapper(sourceEditor);
sourcePanel.addToBottom(wrapper);
猜你喜欢
- 2024-10-18 CKEditor在线编辑器(ckeditor django)
- 2024-10-18 Axure 教程:利用图表前端插件实现高级可视化图表
- 2024-10-18 墙裂推荐!!用于网站的 Markdown 编辑器:Toast UI Editor
- 2024-10-18 CKEditor 4.16.2 发布,修复浏览器兼容性问题
- 2024-10-18 CKEDITOR实现导入WORD并将内容显示到编辑器中
- 2024-10-18 观察PPT大神阿文的微博一年,我发现他偷偷在用这5个神器
- 2024-10-18 Python+selenium自动化之js富文本定位
- 2024-10-18 PPT高手都在用的神器,就算零基础小白也能成为设计大神!
- 2024-10-18 支持复制粘贴WORD图片的CKEDITOR编辑器
- 2024-10-18 一组数据,30秒读懂micro:bit如何在少儿编程界“以小博大”
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)