[英]Parse JSON data in JSON params in Python
可以在內部加載json數據的json嗎?
import json
array = '{"container":"{\"foo\":\"bar\"}"}'
data = json.loads(array)
print(data['container'])
此代碼中的錯誤:json.decoder.JSONDecodeError:預期為','分隔符:第1行第17列(字符16)
可能,但是您需要更多轉義:
import json
array = '{"container":"{\\"foo\\":\\"bar\\"}"}'
data = json.loads(array)
print(data['container'])
這里的問題是,即使在單引號字符串中, \\"
也是單引號的轉義序列。反斜杠需要用另一個反斜杠轉義,以避免這種情況。
以下實現對我適用於Python3.6.6。
碼:
import json
array = '{"container":{"foo":"bar"}}'
data = json.loads(array)
print(data['container'])
print(data['container']['foo'])
輸出:
>>> python3 test.py
{'foo': 'bar'}
bar
注意:如果在嵌套的Json中使用逗號,則container
密鑰的值將是字符串而不是dict
類型(在解析之后)。
讓我們來看看:
碼:
import json
array = '{"container":"{\\"foo\\":\\"bar\\"}"}'
data = json.loads(array)
print(data['container'])
print(data['container']['foo'])
輸出:
>>> python3 test.py
{"foo":"bar"}
Traceback (most recent call last):
File "test.py", line 5, in <module>
print(data['container']['foo'])
TypeError: string indices must be integers
如果您確實要使用逗號,則需要再次解析嵌套的Json。
像這樣:
碼:
import json
array = '{"container":"{\\"foo\\":\\"bar\\"}"}'
data = json.loads(array)
print(data['container'])
data2 = json.loads(data['container'])
print(data2['foo'])
輸出:
>>> python3 test.py
{"foo":"bar"}
bar
嘗試這個
import ast
array = '{"container":"{\\"foo\\":\\"bar\\"}"}'
json_data = ast.literal_eval(array)
print(json_data['container'])
輸出將為{'foo':'bar'}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.