Удалить неиспользуемые ключи из файла JSON - PullRequest
0 голосов
/ 13 мая 2019

Здравствуйте, я ищу лучший способ автоматизировать мою проблему: я работаю над веб-приложением, в котором я использую файлы перевода JSON, имеющие следующую форму:

{ "unique_key" : "value"}

У меня есть несколько файлов,по одному на каждый поддерживаемый язык, который имеет одинаковое количество элементов.

Пример:

i18n_en.json

{ "greeting" : "Hello"}

i18n_fr.json

{ "greeting" : "Bonjour"}

Я очень плохо управлял эволюцией этих файлов, и в результате я получил ключи, которые больше не используются (я легко считаю 30% из ~ 500 ключей), проблема в том, что я не знаю, какие именно.И что мне придется вручную искать всю архитектуру моего приложения, чтобы найти те, которые используются, и восстановить чистый файл.

Моя идея автоматизировать этот процесс:

  1. Откройте один из файлов JSON (независимо от того, какой из них имеет одинаковое количество ключей).
  2. Цикл для каждого ключа
  3. Для каждого ключа просмотрите всю архитектуру моего проекта (просматривая только в файлах * .html или * .js)
  4. Если мы обнаружим вхождение этого ключа, создайте запись в новом чистом json с ключом + значением этого.

Я действительно не знаю, какой язык использовать, чтобы он был оптимизирован для такого рода задач, спасибо за руководство!

Ответы [ 2 ]

2 голосов
/ 13 мая 2019

Может быть, что-то вроде i18next-scanner будет полезно. Вы не первый с такой проблемой.

0 голосов
/ 15 мая 2019

В итоге я создал свой собственный скрипт оболочки:

path_to_project=path/to/my/project
RED='\033[0;31m'
GREEN='\033[0;32m'

rm temp.json
rm final.json
touch temp.json
touch final.json

echo "{" >> temp.json

while IFS=, read -r key value
do
    if grep -r -q --include=\*.{js,html} --exclude-dir={node_modules,bower_components} $key $path_to_project; then
        # write in new json
        echo "\"$key\":\"$value\"," >> temp.json
        echo -e "${GREEN} $key was found !"
    else
        echo -e "${RED} $key not found"
    fi
done < data.csv

echo "}" >> temp.json

#remove new lines
cat temp.json | tr -d '\r' >> final.json

Чтобы это работало, мне пришлось преобразовать свой json-файл в csv (data.csv). Окончательный файл json нужно немного переделать вручную после сценария, но на самом деле ничего особенного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...