2012-05-23 8 views
19

ich zur Zeit mit ASP.NET Web-api arbeitete, wo ich ein Modell-Objekt zurück, wie aus meinem REST Betrieb folgenden:Verwaltung Eigenschaftsnamen zurück in json von Web-api

Produkt mit den Eigenschaften: Name, Id, Description, etc.....

Wenn diese Wird in ein JSON Objekt konvertiert, wird es mit den obigen Eigenschaftsnamen ausgegeben.

Um die aus der Web-API-Operation zurückgegebenen Nutzdaten zu reduzieren, gibt es eine Möglichkeit, die Eigenschaften im JSON-Objekt zu ändern, wie zum Beispiel Desc für Description. Ich könnte das Model-Objekt ändern, aber die Eigenschaftsnamen wären dann nicht sinnvoll!

Antwort

2

Sie können auch http://automapper.org/ auf der asp.net-Seite verwenden, um Ihre vollständigen Objekte zu leichteren zuzuordnen. Könnte Overkill für nur ein oder zwei kleine Objekte sein, aber wenn Sie eine Menge zu tun haben, können Sie etwas Zeit sparen (kostenlos und Open Source zum Booten).

23

Der einfache Weg dazu ist ein Datenvertrag. Here is an article, aber im Grunde handelt es sich um zwei Anmerkungen zu Ihrem Modell. Sie können damit auch alles ignorieren, was nicht serialisiert werden soll.

[DataContract] 
public class Foo { //Your model class 

    [DataMember(Name="bar-none")] //This also allows you to use chars like '-' 
    public string bar {get; set;} 

    [IgnoreDataMember] //Don't serialize this one 
    public List<string> fuzz { get; set;} 

} 
+1

Das war perfekt für meine Zwecke, die die gleichen wie OPs waren. –

+4

Sie müssen möglicherweise auch einen Verweis auf System.Runtime.Serialization hinzufügen, der nicht standardmäßig hinzugefügt wird. http://stackoverflow.com/questions/7401795/namespace-for-datacontract – geon

Verwandte Themen