2017-09-03 59 views
0

我有一個函數返回一個json格式化爲dict。我正在使用json.dumps()存儲到一個對象中,我稍後在代碼中打印該對象。我得到的退款不是我期望的典型格式json爲什麼json.dumps()沒有返回預期的格式?

相關的代碼片段:

rasa_decoded_output = interpreter.parse(u"{}".format(textobject.body)) 
rasa_json_formatted_output = json.dumps(rasa_decoded_output) 

打印rasa_json_formatted_output結果在這個(例子):

("text": "This is a test", "entities": < >, "intent_ranking": < ("confidence": 0.71653000212560282, "name": "st_testing"), ("confidence": 0.05410130707298815, "name": "exists_item"), ("confidence": 0.024777391815713805, "name": "concierge_contact_request"), ("confidence": 0.020174561099034895, "name": "exists_sauna"), ("confidence": 0.018203983982849743, "name": "issue_bugs"), ("confidence": 0.017985724341235722, "name": "exists_driver"), ("confidence": 0.01687271448223236, "name": "request_power_adapter - custom"), ("confidence": 0.016857156745106013, "name": "request_newroom"), ("confidence": 0.015943797930370658, "name": "presto_cost"), ("confidence": 0.015567442054810358, "name": "exists_spa") >, "intent": ("confidence": 0.07653000212560282, "name": "st_testing")) 

什麼做錯了嗎?應該調整什麼來讓json以其典型格式返回,以便我可以解析並提取所需的屬性。

此外,如果我只是打印rasa_decoded_output它與打印rasa_json_formatted_output一樣,這表明json.dumps()沒有任何效果。

使用json.loads()rasa_decoded_output導致錯誤TypeError: the JSON object must be str, not 'dict'

+0

「解釋器」究竟是什麼?你是如何初始化它的? – DyZ

+0

@DYZ解釋器是我從另一個文件導入的函數,具有'from rasa_nlu.model import Metadata,Interpreter' – hackerman

+0

您可以仔細檢查輸出嗎?你的例子在Python和JSON中都是非法的。 – DyZ

回答

0

的問題可能是rasa_decoded_output可能無法解碼JSON對象尚未。你可能需要先使用json.loads,一旦你這樣做了,你可以使用json.dumps

+1

感謝您的評論。它已經是一個解碼的json對象字典,使用json.loads()導致錯誤「TypeError:JSON對象必須是str,而不是'dict'」。 – hackerman

+0

這有點奇怪,因爲json.dumps是爲了給你返回一個字符串。例如json.dumps(dict(one = 1,two = 2))返回「{」one「:1,」two「:2}' – pragMATHiC

+0

當你輸入(rasa_decoded_output)時,你會得到什麼? – pragMATHiC