【问题标题】:Backslash is added to JSON before double quote在双引号之前将反斜杠添加到 JSON
【发布时间】:2016-08-25 10:29:20
【问题描述】:

作为一个 json 响应,我从服务器得到它

{"Data":["{\"item1\": \"value1\",\"item2\": \"value2\"}"]}

我用过

a=json.loads(response)
print(a)
self.write(a)

从我看到的终端

{u'Data':[u'{"item1": "value1", "item2": "value2"}"]'}

来自邮递员,就像

{"Data":["{\"item1\": \"value1\",\"item2\": \"value2\"}"]}

我需要的

{"Data":[{"item1": "value1","item2": "value2"}]}

我知道所有这些格式都是正确的,但我更喜欢 postman 中的最后一种格式。提前致谢

【问题讨论】:

  • 您的问题归结为:“我需要采用这个有效的 JSON 并将其设为 invalid JSON”所以我怀疑这并不是您真正想要做的。
  • 另外:不管是什么产生的 JSON 几乎肯定是坏的,所以这就是我想要修复它的地方。 JSON 是有效的,但它定义的内容(具有单个属性的对象,其值为包含单个字符串的数组,它本身包含 JSON)几乎肯定不是它要定义的内容。
  • 您的 JSON 中似乎有一个包含 JSON 的字符串。但是,您的预期输出是 broken JSON。为什么不把它变成{"Data":[{"item1": "value1", "item2": "value2"}]}?例如。解码嵌入的 JSON 并用结果替换字符串。
  • 它是有效的 JSON 字符串格式。如果你会做json.loads,你会用" 摆脱这些` \ `。您无需更改字符串中的任何内容

标签: python json


【解决方案1】:

我尝试了以下方法,它有效...

content = json.loads(content)['data']
temp = []
for values in content:
   jstr = json.loads(values)
   temp.append(jstr)
val = {"data": temp}
self.write(json.dumps(val))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-02
    • 1970-01-01
    • 1970-01-01
    • 2015-02-27
    • 2019-03-03
    相关资源
    最近更新 更多