AvalonEdit - 用于JSON突出显示的xshd

ale*_*zyk 5 wpf avalonedit

是否有一个用于AvalonEdit控件的xshd规则集以突出显示JSON语法?我尝试了JavaScript的定义,但它不能很好地工作,即:

{
   "name" : "value"
}
Run Code Online (Sandbox Code Playgroud)

使用JavaScript定义,名称和值都具有相同的颜色.

是否有JSON的规则集,如果没有,我如何修改xshd以便在JSON中获得名称和值的不同颜色?

ale*_*zyk 8

如果有人需要这样的东西,我会按照以下方式解决:

<?xml version="1.0" encoding="utf-8" ?>
<SyntaxDefinition name="Json" extensions=".js" xmlns="http://icsharpcode.net/sharpdevelop/syntaxdefinition/2008">
  <Color name="Digits" foreground="#8700FF" exampleText="3.14" />
  <Color name="Value" foreground="#000CFF" exampleText="var text = &quot;Hello, World!&quot;;" />
  <Color name="ParamName" foreground="#057500"  exampleText="var text = &quot;Hello, World!&quot;;" />
  <RuleSet ignoreCase="false">
    <Keywords color="Digits" >
      <Word>true</Word>
      <Word>false</Word>
    </Keywords>
    <Span color="ParamName">
      <Begin>"</Begin>
      <End>(?=:)</End>
    </Span>
    <Span color="Value" multiline="true">
      <Begin>
        (?&lt;=:)\040"[^"]*
      </Begin>
      <End>"</End>
    </Span>
    <Rule color="Digits">\b0[xX][0-9a-fA-F]+|(\b\d+(\.[0-9]+)?|\.[0-9]+)([eE][+-]?[0-9]+)?</Rule>
  </RuleSet>
</SyntaxDefinition>
Run Code Online (Sandbox Code Playgroud)

不完美,但对我来说足够了.

  • 现在请注意:这里有一个官方的:https://github.com/icsharpcode/AvalonEdit/blob/master/ICSharpCode.AvalonEdit/Highlighting/Resources/Json.xshd 它支持数字、字符串、布尔值等都有不同的颜色。 (2认同)