从JSON文件中删除未使用的密钥

时间:2019-05-13 16:18:34

标签: javascript json automation

您好,我正在寻找自动解决问题的最佳方法: 我正在使用一个具有以下形式的JSON转换文件的Web应用程序:

{ "unique_key" : "value"}

我有几个文件,每种受支持的语言一个,都包含相同数量的项目。

Ex:

i18n_en.json

{ "greeting" : "Hello"}

i18n_fr.json

{ "greeting" : "Bonjour"}

我已经非常不好地管理了这些文件的演变,最终我得到了不再使用的密钥(我轻易地认为〜500个密钥中有30%),问题是我不知道哪个密钥。而且,我将不得不手动搜索应用程序的整个体系结构以找到已使用的文件并重做一个干净的文件。

我实现此过程自动化的想法是:

  1. 打开一个JSON文件(无论哪一个,它们都具有 相同数量的键)。
  2. 每个键的循环
  3. 对于每个键,浏览项目的整个体系结构(按 仅在* .html或* .js文件中查看)
  4. 如果我们发现此键的出现,请在新的干净位置中创建一个条目 json及其键和值。

我真的不知道该使用哪种语言针对这种任务进行优化,谢谢您的指导!

2 个答案:

答案 0 :(得分:2)

也许像i18next-scanner这样的东西会有用。您不是第一个遇到这种问题的人。

答案 1 :(得分:0)

我最终创建了自己的shell脚本:

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文件需要手动进行一些修改,但实际上并没有什么不妥。