为什么Python以不同方式处理JSON字符串?

时间:2017-11-30 03:31:41

标签: python json

from json import loads

jtext = {'24607': ['{"rule":"{{abnormal-key}} != \\"[]\\"","validate":[{"abnormal-key":["set flag_trace"]}]}']}
j1 = jtext
print(j1, type(j1))

j2 = j1["24607"][0]
print(j2, type(j2))

j2 = loads(j2)
j3 = j2["validate"][0]
print(j3, type(j3))

j4 = j3["abnormal-key"][0]
print(j4, type(j4))

为了处理Excel文档,我尝试使用JSON模型将str转移到dict。 但我不知道为什么,在这种情况下,j2应该被转移,j3不应该转移。

输出:

{'24607': ['{"rule":"{{abnormal-key}} != \\"[]\\"","validate":[{"abnormal-key":["set flag_trace"]}]}']} <class 'dict'>
{"rule":"{{abnormal-key}} != \"[]\"","validate":[{"abnormal-key":["set flag_trace"]}]} <class 'str'>
{'abnormal-key': ['set flag_trace']} <class 'dict'>
set flag_trace <class 'str'>

我的环境是Mac + Python 3.6 + PyCharm社区。

1 个答案:

答案 0 :(得分:0)

Python在你编写它时会对它进行处理。

j1是一本字典

j1["24607"][0]是一个字符串。 '24607': ['...'] .... '{"rule":"{{abnormal-key}} != \\"[]\\"是1)引用和2)一个不完整的字典,因为它缺少一个括号。

j2["validate"][0]是一本字典。内部{} ... "validate": [ {"":[]} ]

周围没有引号

j3["abnormal-key"][0]是一个字符串。这又是值,有引号,'set flag_trace'