JSON值替换为来自另一个文件的查找

时间:2017-06-23 19:04:02

标签: python bash shell awk

我有一个json:

“key1”:“value1”

“key2”:“value2”

和另一个文件:

value1 valueA

value2 valueB

我需要将json值(value1,value2)替换为文件中的值(valueA,valueB)。我们是否有任何python或shell脚本以递归方式从子文件查找中读取值并将其替换为第二列值!

3 个答案:

答案 0 :(得分:-1)

您可能会尝试编写此类脚本。你需要

  • 读取替换数据,并将其组织成方便的数据结构,如MultipartFile
  • 读入并解析原始的json。
  • 迭代原始json中的数据,根据需要进行修改
  • 将数据写入新的json文件。

这是一个脚本:

dict()

答案 1 :(得分:-1)

这将完成这项工作,只要将数据分隔在一个文件中,并用空格分隔列。

#!/usr/bin/env python
#-*- coding: utf-8 -*-

dict_ = {
    "key1" : "value1",
    "key2" : "value2",
    }

def fileToDictionary(FILENAME):
    lines = [line.rstrip() for line in open(FILENAME)]
    return {k:v for (k, v) in [x.split(' ') for x in lines]}

fileDictionary = fileToDictionary(FILENAME)

items = {k: fileDictionary[v] for (k, v) in dict_.items()}

print(items)
# {'key1': 'valueA', 'key2': 'valueB'}

答案 2 :(得分:-1)

我建议使用jq(高级JSON操作工具)

输入文件:

test.json

{
"key1" : "value1",
"key2" : "value2"
}

values.txt

value1 valueA
value2 valueB

jq 解决方案:

jq -s '.[0] as $v | [ .[1] | to_entries | .[] 
       | if $v[(.value)]!=null then .value |= $v[.] else . end] 
       | from_entries' \
       <(jq -Rs '[split("\n") | .[] | split(" ") | select(length>0)] 
                 | reduce .[] as $a({}; .[$a[0]] |= $a[1])' values.txt) test.json

输出:

{
  "key1": "valueA",
  "key2": "valueB"
}