2017-09-03 7 views
0

Ich habe eine Funktion, die eine json formatierte dict zurückgibt. Ich verwende json.dumps(), um in ein Objekt zu speichern, das ich später im Code drucke. Was ich als zurückgegeben bekomme, ist nicht das typische json Format, das ich erwartet hätte.Warum gibt json.dumps() das erwartete Format nicht zurück?

ein entsprechender Code-Schnipsel:

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

Druck rasa_json_formatted_output Ergebnisse in diesem (Beispiel):

("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")) 

Was ist hier falsch gemacht? Was sollte optimiert werden, um JSON in seinem typischen Format zurückzubringen, damit ich die gewünschten Eigenschaften analysieren und herausziehen kann.

Auch, wenn ich nur rasa_decoded_output drucken tut es das gleiche wie Drucken rasa_json_formatted_output, was darauf hindeutet, json.dumps() hat keine Wirkung.

Mit json.loads() auf rasa_decoded_output führt zu einem Fehler TypeError: the JSON object must be str, not 'dict'

+0

Was genau ist "Interpreter"? Wie hast du es initialisiert? – DyZ

+0

@DYZ Der Interpreter ist eine Funktion, die ich aus einer anderen Datei importieren mit 'from rasa_nlu.model importieren Metadata, Interpreter' – hackerman

+0

Könnten Sie die Ausgabe überprüfen? Was Sie in Ihrem Beispiel haben, ist sowohl in Python als auch in JSON illegal. – DyZ

Antwort

0

Das Problem könnte sein, dass rasa_decoded_output kein decodiertes json Objekt noch sein kann. Sie müssen möglicherweise zuerst json.loads verwenden und sobald Sie dies getan haben, können Sie json.dumps verwenden

+1

danke für den Kommentar. Es ist bereits ein decodiertes Json-Objekt-Dict, wobei json.loads() den Fehler "TypeError: das JSON-Objekt muss str sein, nicht 'dict'". – hackerman

+0

es ist ein bisschen komisch, als json.dumps soll Ihnen eine Zeichenfolge zurückgeben. z.B. json.dumps (dict (eins = 1, zwei = 2)) gibt '{"eins": 1, "zwei": 2}' zurück – pragMATHiC

+0

Was bekommen Sie, wenn Sie (rasa_decoded_output) eingeben? – pragMATHiC

Verwandte Themen