2014-02-28 11 views
5

ich einen solchen Code haben:Objektzuordnung in RestSharp für JSON nicht funktioniert

using System; 
using RestSharp.Serializers; 

public class Program 
{ 
    public static void Main() 
    { 
     var obj = new Order(); 
     obj.Test = 42; 
     var serializer = new JsonSerializer(); 
     var json = serializer.Serialize(obj); 
     Console.WriteLine(json);  
    } 
} 

public class Order 
{ 
    [SerializeAs(Name = "object")] 
    public string Object 
    { 
     get { return "Order"; } 
    } 

    [SerializeAs(Name = "TestName")] 
    public int Test 
    { 
     get;set; 
    }   
} 

auf SerializeAs Basierend Attribut sollte RestSharp Namen verwenden, um von Attribut, nicht der Name der Eigenschaft. Aber es ignoriert es einfach. Ausgabe für diesen Code ist:

{ 
    "Object": "Order", 
    "Test": 42 
} 

Bin ich etwas verpasst oder es funktioniert nicht mit RestSharp?

Der gleiche Code-Schnipsel in DotNetFiddle - http://dotnetfiddle.net/ffaXUY

+0

Enthält diese selbst kompilieren? 'Objekt' ist ein reserviertes Schlüsselwort –

+0

Wir können Klassennamen als Eigenschaftsnamen verwenden. Es ist in Ordnung. Aber wenn ich 'object' verwenden würde, kompiliert es nicht –

Antwort

3

Nun, verwendet RestSharp simplejson, die nicht jede Bezugnahme auf SerializeAs hat und es hat auch keine eigenen Mechanismus dafür. Ich habe eine Pull-Anfrage gefunden - https://github.com/restsharp/RestSharp/pull/331, aber es wurde wegen SimpleJson geschlossen.

In der Standardimplementierung von IJsonSerializerStrategy - PocoJsonSerializerStrategy gibt es eine erste Logik zum Ersetzen von Eigenschaftsnamen, aber es funktioniert jetzt nicht. Es hat ein solches Verfahren - https://github.com/facebook-csharp-sdk/simple-json/blob/master/src/SimpleJson/SimpleJson.cs:

protected virtual string MapClrMemberNameToJsonFieldName(string clrPropertyName) 
{ 
    return clrPropertyName; 
} 

Also ich nur simplejson zu Newtonsoft Json basierend auf der Probe aus diesem Artikel ersetzt - http://blog.patrickmriley.net/2014/02/restsharp-using-jsonnet-serializer.html

+0

Aber es funktioniert nicht für das Deserialisieren. Wie kann ich ein solches Verhalten mit Antwortdaten erhalten? – Neshta