Json 属性和值的不同颜色

Json 属性和值的不同颜色

使用 N++ 快速检查 Json,我遇到以下问题:
所有内容都有相同的颜色。属性/文本值。

在 N++ 中样式配置器,没有 Value 和 Property Name 的选项。只有 String 单引号或双引号。

必须有更好的色彩和可读性吗?

例如:

对于以下 Json:

{"description":{"title":"Contiguous U.S., Average Temperature","units":"Degrees Fahrenheit","base_period":"1901-2000"},"data":{"189512":{"value":"50.34","anomaly":"-1.68"},"189612":{"value":"51.99","anomaly":"-0.03"},"189712":{"value":"51.56","anomaly":"-0.46"}}}

N++ 和在线工具的颜色确实有很大不同:

在此处输入图片描述

在 N++ 中,您的眼睛必须先查找,:然后回滚才能读取属性名称。尤其是多行数据(缩进和自动回车,这样您就不会水平滚动到无穷大)。

在线工具(不要介意深色主题)通过拥有更多不同的颜色确实更具可读性。

答案1

闪烁Notepad++ 使用的组件负责语法高亮的词法分析器。显然,该词法分析器的设计者没有决定区分属性名称和值,尽管这似乎是个好主意。要对词法分析器的改进提出建议,您必须查看最新的 Scintilla JSON Lexer 是否已经纳入了这一变化,如果没有,请添加一个要求与 Scintilla 项目。如果更改已经存在,或者 Scintilla 发布了包含该修复的新版本,则您必须询问 Notepad++ 开发人员升级 Scintilla 以包含该修复。(上次 NPP升级了 Scintilla是从 3.34 到 3.56 — 大约 4 年前 — 与最新的 Scintilla 4.1.3 相比)

解决方法 #1:更改样式配置器 > JSON > 运算符:颜色使属性和值之间具有突出的颜色 - 可能是明亮的黄色背景或类似的颜色 -至少使您的眼睛更容易找到分隔符...

解决方法 #2:在社区论坛,Claudia Frank 已经完成了一些基于 PythonScript 的词法分析器的工作,该词法分析器允许用户使用正则表达式定义语言,而不是简单的 UDL 2.1。我收集了她的作品的链接,网址为https://notepad-plus-plus.org/community/topic/16164/bug-javascript-multiline-character-not-understood-by-notepad/11通过一些努力,您可能能够以您喜欢的方式定义解析 JSON 所需的正则表达式。


更新:您可能能够使用 UDL(用户定义语言)来执行您想要的操作。我想出了一个快速方法,可以实现您描述的突出显示差异。作为一个令人讨厌的副作用,它会破坏折叠(因此无法折叠{ ... }对。(我尝试设置 UDL 折叠选项,但嵌套折叠无法正常工作,至少在我第一次尝试时)

  • 语言 > 定义您的语言...创建新的= JsonPropertyValues。
  • 运算符和分隔符
  • 操作员 1= , : " ' { },STYLER = 设置你想要的标点符号颜色
  • 分隔符 1 样式= OPEN: :, Close = ((EOL)), STYLER = 设置 VALUE 侧的颜色;设置Nesting:为允许Operators 1
  • 分隔符 2 样式= OPEN: ",Close = ",STYLER = 设置双引号中左侧的颜色(属性),无需嵌套
  • 分隔符 3 样式= OPEN: ',Close = ',STYLER = 设置单引号中左侧的颜色(属性),无需嵌套

您可能希望设置为Nesting:包括Numbers上述所有 STYLER 条目。然后转到评论和编号选项卡并定义 STYLER 来设置数字的颜色。

您可以设置扩展json,如果您希望它应用于所有.JSON文件,或者您可以手动应用语言 > JsonPropertyValues对于您想要以此方式解析的任何 JSON。

无论如何,根据您的描述,这是一个合理的起点;请随意定制它或扩展它所包含的功能。

答案2

方法 1:

设置 > 样式配置器 > 全局样式(语言) > 全局覆盖(样式) > 启用全局背景颜色

这对我有用。

附言:我选择的主题是DarkModeDefault,但这并不重要,因为这取决于启用您希望的全局样式设置)

PS2:

方法 2:

设置 > 首选项 > 暗黑模式 > 暗黑模式(而不是遵循 Windows/其他操作系统)

相关内容