将JSON中的变量替换为列表

时间:2018-05-18 19:20:21

标签: python json

我正在尝试将JSON文件中的静态变量替换为文本字符串列表中的静态变量。

以下是JSON的一个示例:

 {
  "ignorecase": true, 
  "parameter": "PARA", 
  "type": "querystring"
 }, 
 {
  "ignorecase": true, 
  "parameter": "PARA", 
  "type": "querystring"
 }, 
 {
  "ignorecase": true, 
  "parameter": "PARA", 
  "type": "querystring"
 }

在JSON文件中,我需要将PARA替换为[cd, pid, pod]

等列表中的项目

我正在寻找类似的输出:

 {
  "ignorecase": true, 
  "parameter": "cd", 
  "type": "querystring"
 }, 
 {
  "ignorecase": true, 
  "parameter": "pid", 
  "type": "querystring"
 }, 
 {
  "ignorecase": true, 
  "parameter": "pod", 
  "type": "querystring"
 }

我认为用Python做起来应该很容易,但我有点挣扎。这是我正在使用的代码:

import re
def repl(matchobj):
     return str(y.pop(0))
x='''  {
    "ignorecase": true, 
    "parameter": "PARA", 
    "type": "querystring"
  }, 
  {
    "ignorecase": true, 
    "parameter": "PARA", 
    "type": "querystring"
  }, 
  {
    "ignorecase": true, 
    "parameter": "PARA", 
    "type": "querystring"
  }'''
y=['cd', 'pid', 'pod']
print re.sub(r"PARA",repl,x)

我得到的错误是TypeError: unhashable type: 'list'

希望找到一种更好的方法来设置它并能够解析JSON并轻松替换。谢谢!

2 个答案:

答案 0 :(得分:2)

我认为有一个标准库json可以满足您的需求。

具体而言,您希望使用json.loads(x)阅读它,修改后您将json.dumps(modified_x)

答案 1 :(得分:1)

使用json标准库。将你的json变成字典,修改它,然后将它序列化为json。您感兴趣的函数是hasAuthority用于Dump-String,它将本机python数据结构转换为json字符串,dumps用于Load-String,它是反向的。

例如

loads