2016-06-06 15 views
0

ich habe dies in meinem Python-Code:Fehler: nicht JSON serializable

my_list=json.dumps(data_list) 
payload = {'data_list' : my_list} 
requests.get("http://127.0.0.1:8000/myhorizon/resource_usage/index", 
json=payload) 

und ich verwende Ajax eine Kurve mit den Informationen von my_list zu ziehen:

<script> 
    function diagramme_rectangulaire() { 
    new ajax().request('http://127.0.0.1:8000/myhorizon/resource_usage/index', 
    { 
     request: 'GET', 
     onresponse: function(response, success) { 
      var n = JSON.parse(response); 

      var lineGraph = new LineGraph("diagramme"); 
      for (var i = n.length - 1; i >= 0; i--) { 
       lineGraph.addPoint(n[i]['timestamp'], parseInt(n[i]['volume'])); 
      } 
      lineGraph.drawAxis(); 
      lineGraph.drawLine(); 
     } 
    }); 

aber ich bekomme folgende Fehler :

<type 'exceptions.TypeError'> <Sample {u'user_id': u'a72b91ce68c540ba92b0834c54a145db', u'resource_id': u'instance-000083d6-a39444d0-e670-45dc-b3a8-7f4e86e372e4-tap419f510b-d6', u'timestamp': u'2016-06-06T15:39:39', u'meter': u'network.outgoing.packets', u'volume': 14667405.0, u'source': u'openstack', u'recorded_at': u'2016-06-06T15:39:54.197000', u'project_id': u'52a088c0f53d45f2ba9890cff3a2a69f', u'type': u'cumulative', u'id': u'e12173d8-2bfc-11e6-b3cd-9eb52a95a23d', u'unit': u'packet', u'metadata': {u'instance_id': u'a39444d0-e670-45dc-b3a8-7f4e86e372e4', u'instance_type': u'40', u'mac': u'fa:16:3e:2e:bb:fb', u'fref': u'None', u'name': u'tap419f510b-d6'}}> is not JSON serializable 

Irgendwelche Ideen plz ??

+0

und was 'data_list'? Wo ist die Klasse 'Sample' definiert? – Daniel

+0

Warum versuchen Sie, JSON-Daten an eine GET-Anforderung zu übergeben? Soweit ich weiß, gilt das 'json = xxx'-Argument nur für POST-Anfragen. –

+0

@Daniel data_list ist eine Information, die ich aus einer OpenStack-Datenbank mit API erhalte. – sacmer

Antwort

0

Sie konvertieren data_list in das JSON-Format, aber dann speichern Sie es in einem regulären Python-Wörterbuch, das nicht JSON ist.

Sie müssen zunächst das Wörterbuch erstellen und dann konvertieren Sie die gesamte Sache zu JSON.

Versuchen Sie folgendes:

my_list = {'data_list' : data_list} 
payload = json.dumps(my_list) 
Verwandte Themen