2017-11-30 9 views
-2
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モデルを使用してstrdictに転送しようとしました。 しかし、なぜこの場合、j2を転送し、j3を転送すべきでないかわかりません。なぜPythonはJSON文字列を扱いが違うのですか?

出力:

{'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

あなたの質問は非常に不明です...これはExcelと関係がありますか? JSONをもっと詳しく見てください。タイプはすべて意味をなさない –

答えて

0

あなたが書いたとおりにPythonがそれを扱っています。

j1

j1["24607"][0]が文字列である辞書です。 '24607': ['...'] .... '{"rule":"{{abnormal-key}} != \\"[]\\"は1)引用符で囲まれており、2)括弧がないため不完全な辞書です。

j2["validate"][0]は辞書です。内臓の引用符はありません{} ... "validate": [ {"":[]} ]

j3["abnormal-key"][0]は文字列です。 'set flag_trace'

関連する問題