Frage

Ich habe gerade servicestack.text heruntergeladen, um es in meinem ASP.NET zu verwenden. Ich habe Klasse mit vielen Eigenschaften und möchte fünf von ihnen (String, Ganzzahl, Binär) mit JSON serialisieren. Könnte jemand einfaches Beispiel posten, wie man JSON -Objekt aus meiner Klasse erstellt?

War es hilfreich?

Lösung

Servicestack wird standardmäßig alle öffentlichen Eigenschaften eines POCO deserialisieren.

Wenn Sie nur nur einige der Eigenschaften serialisieren möchten, möchten Sie Ihre Klasse mit [DataContract], [DataMember] -attributen (auf die gleiche Weise, wenn Sie MS DatacontractjsonSerializer verwenden), z.

[DataContract]
public class MyClass
{
    public string WillNotSerializeString { get; set; }

    [DataMember]
    public string WillSerializeString { get; set; }

    [DataMember]
    public int WillSerializeInt { get; set; }

    [DataMember]
    public byte[] WillSerializeByteArray { get; set; }
}

Anschließend können Sie entweder die statischen Versorgungsmethoden für JsonSerializer verwenden, um sie zu serialisieren, oder die knackteren Erweiterungsmethoden, z. B.:

var dto = new MyClass { WillSerializeString = "some text" };
string json = dto.ToJson();
MyClass fromJson = json.FromJson<MyClass>();

Bearbeiten:

Wie @Noah (aus Kommentaren) erwähnt, können Sie auch das Attribut [Ignoredatamember] verwenden, um eine einzelne Eigenschaft auszuschließen.

Andere Tipps

Du kannst den ... benutzen [Serializable()] Attribut auf Ihrer benutzerdefinierten Klasse und dann:

JavaScriptSerializer serializer = new JavaScriptSerializer();

var Json = serializer.Serialize(myObject);

Um bestimmte Eigenschaften in dem von Ihnen serialisierenden Objekt zu ignorieren, platzieren Sie einfach das [NonSerialized] auf sie zuschreiben.

Aktualisieren:

Angesichts der Tatsache, dass Sie Servicestack verwenden möchten, um Ihre Serialisierung durchzuführen, gibt die Servicestack -Website das folgende Beispiel:

var customer = new Customer { Name="Joe Bloggs", Age=31 };
var json = JsonSerializer.SerializeToString(customer);
var fromJson = JsonSerializer.DeserializeFromString<Customer>(json);

Quelle: http://www.servicestack.net/mythz_blog/?p=344

Der Test von Servicestack beweist dies, indem er die bereitstellt [DataContract] und [DataMember] Mit Attribut können Sie feststellen, welches serialisiert wird und was nicht.

Prüfen: https://github.com/servicestack/servicestack.text/blob/master/tests/servicestack.text.tests/datacontracttests.cs

Objekte im Test: https://github.com/servicestack/servicestack.text/blob/master/tests/servicestack.text.tests/support/ddndtos.cs

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top