Используя N++ для быстрой проверки Json, у меня возникает следующая проблема:
Все серое. Свойства / Текстовые Значения.

Но в N++ Style Configurator нет опции для значения и имени свойства. Это просто строковая одинарная или двойная кавычка.

Есть ли язык или конфигурация, которые обеспечат более яркую раскраску для Json?

Пример:

Для следующего 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++ даст это представление:

Ваши глаза должны искать : затем поверните назад, чтобы прочитать имя свойства. Особенно для многострочных данных (с отступом и автоматическим возвратом каретки, чтобы вы не прокручивали горизонталь в бесконечность).

В то время как я ожидал такого результата (не минуйте темную тему) от quicktype.io

1 ответ1

1

Компонент Scintilla, используемый Notepad++, отвечает за лексеры для подсветки синтаксиса. Видимо, разработчик этого лексера не решил проводить различие между именами свойств и значениями, хотя это кажется хорошей идеей. Чтобы сделать предложение об этом улучшении в лексере, вам нужно посмотреть, внедрил ли это самое последнее Scintilla JSON Lexer это изменение, и если нет, добавить запрос в проект Scintilla. Если изменение уже внесено или Scintilla выпускает новую версию с этим исправлением, вам нужно будет попросить разработчика Notepad++ обновить Scintilla, чтобы включить это исправление. (И последний раз, когда АЭС модернизировала, ее Scintilla была с 3.34 до 3.56 - около 4 лет назад - по сравнению с самой последней Scintilla 4.1.3)

Обходной путь № 1: измените Color Configurator> JSON> Operator color так, чтобы он выделялся между свойством и значением - может быть, с ярко-желтым фоном или чем-то - чтобы было проще найти разделители : at наименее...

Обходной путь № 2: На форумах сообщества Клаудия Франк проделала некоторую работу над лексером на основе PythonScript, который позволял бы пользовательским языкам с регулярными выражениями, а не упрощенному UDL 2.1. Моя коллекция ссылок на ее работу находится по адресу https://notepad-plus-plus.org/community/topic/16164/bug-javascript-multiline-character-not-understood-by-notepad/11. Приложив некоторые усилия, вы сможете определить регулярное выражение, необходимое для анализа JSON, так, как вам нравится.


обновление: вы можете получить UDL (определяемый пользователем язык), чтобы делать то, что вы хотите. Я пришел к быстрому, которое получит описанные вами различия в освещении. Как неприятный побочный эффект, он нарушает складывание (поэтому не может свернуть пары { ... } . (Я попытался установить параметры свертывания UDL, но вложенные сгибы работали неправильно, по крайней мере, с первой попытки)

  • Язык> Определить свой язык ...: Создать New = JsonPropertyValues.
  • Операторы и разделители
  • Операторы 1 =,: , : " ' { } , STYLER = установить любые цвета, которые вы хотите для пунктуации
  • Разделитель 1 стиль = : Close = ((EOL)) STYLER = установить цвет вы хотите сторона VALUE быть; установить Nesting: разрешить Operators 1
  • Стиль разделителя 2 = OPEN: " , Close = " , STYLER = установить цвет для левой стороны (свойство) в двойных кавычках, вложение не требуется
  • Стиль разделителя 3 = OPEN: ' , Close = ' , STYLER = установить цвет для левой стороны (свойство), когда в одинарных кавычках нет необходимости в вложении

Возможно, вы захотите установить Nesting: включить Numbers во все эти записи STYLER выше. А затем перейдите на вкладку « Комментарий и номер » и определите СТИЛЬ, чтобы также установить цвет для чисел.

Вы можете установить в поле Ext значение json , если хотите, чтобы оно применялось ко всем .JSON , или вы можете просто вручную применить Language> JsonPropertyValues к любому JSON, который вы хотите проанализировать таким образом.

В любом случае, это разумная отправная точка, основанная на том, что вы описали; не стесняйтесь настраивать его или расширять за пределы включенных функций.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .