Der JSON-Textkörper wird von NancyModule nicht deseralisiert

8

Ich habe eine Route in meinem Modul, die einen JSON-Text annehmen soll, der einen Blogbeitrag darstellt. Problem ist, dass der Anfragetext nicht seralisiert wird. Wenn ich debugge, sehe ich die folgenden Werte auf der Anfrage:

%Vor%

Die Route

%Vor%

Die HTTP-Anfrage

%Vor%     
Gabriel Smoljár 26.04.2014, 07:30
quelle

1 Antwort

14

Deserialisierung:

Es ist nichts falsch mit Ihrem Code, das Problem ist, dass Sie Ihren JSON-Code umschlossen haben:

Ihr Objekt hat eine Eigenschaft namens Post , dann hat es den eigentlichen Post.

Aktualisieren Sie Ihren Körper wie folgt:

{ "Title":"Hello", "Content":"World", "Created":"2014-04-26" }

Dies entspricht höchstwahrscheinlich den Eigenschaften Ihres Objekts Post .

Unten ist die Serialisierung für den Client, nicht das, wonach die Frage gefragt wurde

Serialisierung:

Sie müssen eine Accept Kopfzeile hinzufügen.

Ich habe über Nancy Conneg hier geschrieben:

Ссылка

Ihr Szenario funktioniert nicht, weil Sie dem Server nur mitteilen, was Ihr Inhalt ist, und nicht, was Sie im Gegenzug erwarten.

Akzeptiere

Mit dem Chrome-Plugin - Postman können Sie Ihr Szenario ähnlich wie folgt testen:

Wenn Sie den Header Accept als application/json anwenden, wird der zurückgegebene Inhalt serialisiert.

.json URL

Alternativ können Sie am Ende Ihrer URL .json hinzufügen, um sie als JSON zurückzugeben:

http://yoursite.com/blog.json

Dadurch wird der JSON-Serializer gezwungen, einzuschalten.

.AsJson ()

Wenn Sie JSON immer unabhängig zurückgeben möchten, können Sie Ihr Ergebnis mit .AsJson()

zurückgeben %Vor%

Hinweis: Wenn Sie einen dynamic -Typ zurückgeben, müssen Sie ihn umwandeln: return Response.AsJson((object)post);

    
Phill 26.04.2014, 08:51
quelle

Tags und Links