Ember.js REST-Adapter ohne JSON-Root

7

Der REST-Adapter Ember.js erwartet, dass der JSON wie folgt zurückgegeben wird:

%Vor%

Aber meine API gibt die Daten ohne ein Wurzelelement zurück:

%Vor%

Ist es möglich, den REST-Adapter so anzupassen, dass er meine JSON-Daten akzeptiert? Im Moment wird angezeigt: " Assertion failed: Ihr Server hat einen Hash mit dem Schlüssel 0 zurückgegeben, aber Sie haben keine Zuordnung dafür "

UPDATE: Basierend auf Sherwin Yus Antwort unten, das ist, was ich dachte, scheint so weit zu arbeiten: Ссылка

    
Richard 02.07.2013, 15:18
quelle

5 Antworten

8

Ja, Sie können Ihren eigenen benutzerdefinierten REST-Adapter schreiben. Sehen Sie sich den Quellcode im JSONSerializer an , RESTSerializer (erweitert den JSONSerializer) und der REST-Adapter .

Im Grunde müssen Sie die Methoden extract* vom JSONSerializer überschreiben.

Momentan sieht es ungefähr so ​​aus:

%Vor%

Beachten Sie, dass es json[root] überprüft - Sie müssten Ihre benutzerdefinierte Methode basierend auf Ihrer erwarteten API-Antwort schreiben.

Ein anderer Ansatz wäre, den JSON von der API "vorzuverarbeiten", um ein Wurzelelement zu verwenden. Sie können dies tun, indem Sie herausfinden, welche Methoden extract* aufrufen (die JSON übergeben), und bevor Sie dies tun, ändern Sie den JSON so, dass er das Wurzelelement enthält.

Ich hoffe, das hilft, bitte lassen Sie es mich wissen, wenn es unklar ist.

    
Sherwin Yu 02.07.2013, 15:39
quelle
15

Sie könnten es auch in etwas normalisieren, was ember erwarten würde.

%Vor%     
Kit Sunde 15.12.2013 12:41
quelle
1

Ich habe das gelöst, indem ich DS.RESTSerializer erweitert habe. Die extractArray-Methode muss überlastet werden, wenn die Serverantwort vom Typ Array ist.

%Vor%     
Ashraf Hasan 31.03.2015 03:28
quelle
0

Der einfachste Weg ist, den RESTSerializer nicht zu verwenden, sondern den viel einfacheren JSONSerializer, der kein Root-Element erwartet.

Gute Ressourcen, um zu verstehen, welcher Serializer für eine bestimmte API verwendet werden soll, finden Sie in diesen zwei Blogposts:

Ссылка
Ссылка

    
wdspkr 07.07.2016 16:08
quelle
-1

Ich habe versucht, json Root hinzuzufügen. Das funktioniert für mich:

%Vor%     
nlt 10.09.2013 04:09
quelle