2016-03-24 5 views
1

Ich versuche, eine JSON-Datei in ein Skript zu bekommen. Ich kann nicht scheinen zu können, um es dort zu erhalten, indem es aus dem Dateisystem dient, so dass ich eine Ansicht aus, die die JSON-Daten auf der Seite zurück, wie so:JSON zu JS mit Django: SyntaxError: fehlende: nach Eigenschaft ID

def graph(request, d):     #d.data is the file in the database 
    data = json.load(d.data) 
    return render(request, 'temp/template.html', {'json': data}) 

In meinem JS:

var j = {{ json|safe }}; 

Als ich an der Quelle für die JS Blick zeigt es die Daten in diesem Format:

{u'people': [{u'name': u'steve'}, {u'name': u'dave'}]} 

Was ich ein Problem nicht gelesen werden soll. Ich habe keine Variablen namens "id" und trotzdem bekomme ich den Fehler im Titel, der auf die angegebene Zeile von JS zeigt.

Warum könnte das sein? Wie verwende ich dann die Objekte aus dem JSON in meinem Skript?

+1

'u'name' ist in JS ungültig. es sollte ohne die u. – jcubic

+0

Das liegt daran, dass Django ein Unicode-Array zurückgibt. Weißt du, wie man das entweder in gültiges JS parst oder ob die Ansicht es zurückgibt? –

Antwort

0

Gelöst von simplejson mit:

import simplejson as json 

Und alles andere wie oben. Dies liegt daran, die in json.dumps gebaut gibt ein Array von Unicode wie:

{u'people': [{u'name': u'steve'}, {u'name': u'dave'}]} 

Wenn simplejson verwenden, das kein Problem sein sollte.

+0

Wirklich, nein. Die Ausgabe von simplejson ist die gleiche wie json, Ihr Problem war, dass Sie 'json.dumps()' nicht wirklich aufgerufen haben. –

+0

Ich hatte leider verschiedene Fehler mit Dumps wie Xyz ist nicht serialisierbar –

Verwandte Themen