JSON serialisiert ausgegeben hat C# entkam Formatierung

Ich versuche zu POST eine aktualisierte Objekt-API REST-server von meinem client. Ich bin mit RestSharp und ich bin das hinzufügen von JSON-Repräsentation des Objekts, um den Körper von meinem Wunsch. Allerdings ist mein string-Darstellung des serialisierten Objekts hat ein Falsches format. Der server lehnt Sie ab.

Meine Anfrage wie folgt aussieht (ich habe Fiddler, um es zu bekommen)

PUT https://myapp.net/api/PriceListItems/151276 HTTP/1.1
Accept: application/json, application/xml, text/json, text/x-json, text/javascript, text/xml
User-Agent: RestSharp/104.4.0.0
Content-Type: application/json
Host: myapp.net
Content-Length: 75
Accept-Encoding: gzip, deflate

"{\"Id\":151276,\"AgendaId\":0,\"CurrencyId\":1,\"Code\":\"\",\"Price\":7.0}"

Habe ich versucht zu serialisieren mein Objekt mit Json.NET, RestSharp die interne Json-serializer und mit JavaScriptSerializer aus dem System.Web.Script.Serialisierung. Alle einen string zurückgeben, in einem solchen format. Ich weiß, dass der Grund für eine solche Formatierung ist, da C# entweicht doppelten Anführungszeichen, damit es angezeigt werden kann es richtig drin, aber ich verstehe nicht, wie soll ich es pass auf meine Anfrage, ohne diesen entkommen zu formatieren. Ich weiß, für eine Tatsache, dass eine ordnungsgemäß formatierte JSON akzeptiert der server.

Dem Objekt, das ich bin versucht zu serialisieren sieht wie folgt aus

public class PriceListItem
    {
        public static PriceListItem CreatePriceListItem(int id, int agendaId, int currencyId, string code, string unit, decimal price)
        {
            var priceListItem = new PriceListItem
            {
                Id = id,
                AgendaId = agendaId,
                CurrencyId = currencyId,
                Code = code,
                Price = price
            };
            return priceListItem;
        }

        public int Id { get; set; }

        public int AgendaId { get; set; }

        public int CurrencyId { get; set; }

        public string Code { get; set; }

        public decimal Price { get; set; }

BEARBEITEN:
Zog meine Lösung von hier aus zu Antworten.

  • Scheint, wie Sie ein Doppel-Serialisierung. Konnte nicht zeigen Sie die PUT-Action des Controllers zu?
  • Ja, Doppel-Serialisierung war genau mein problem. Ich war nur hinzufügen info zu meinem original-post an, dass Informationen enthalten. Danke.
  • möchten Sie vielleicht bewegen Sie Ihre Lösung (es war doppelt serialisiert) nach unten in eine Antwort und es akzeptieren. Dann werden die Menschen mit diesem problem in Zukunft besser in der Lage sind, finden Sie Ihre Lösung.
  • na gut, ich Tat wie Sie vorgeschlagen und zog meine Lösung
  • Gute Entscheidung, btw es war @MatthewHaugen, der vorschlug, Sie zu tun.
  • Ich bin so sorry ich muss noch Lesen sorgfältig. Eh, @MatthewHaugen vielen Dank für die Annahme meiner Lösung als Antwort.
  • Ich kenne dieses Gefühl, brauchen, um mehr zu Lesen sorgfältig. Jetzt sollten Sie daran denken, zu akzeptieren, dass die Antwort, auch! :).

InformationsquelleAutor filipv | 2014-07-22
Schreibe einen Kommentar