Angenommen, wir haben die folgenden KlassendefinitionenSerialize komplexe Eigenschaft des Objekts als Skalarwert
public class A
{
public string Name { get; } = "Johny Bravo";
public B ComplexProperty { get; } = new B();
}
public class B
{
public string Prop1 { get; } = "value1";
public string Prop2 { get; } = "value2";
public int Prop3 { get; } = 100;
public override string ToString()
{
return this.Prop3.ToString();
}
}
wenn serialisierte
var a = new A();
var str = JsonConvert.SerializeObject(a);
es in dem folgenden JSON-String
{
"Name":"Johny Bravo",
"ComplexProperty":{
"Prop1":"value1",
"Prop2":"value2",
"Prop3":100
}
}
führen Wie machen wir die ComplexProperty serialize als skalaren Wert? Das gewünschte Ergebnis muss diese:
{
"Name":"Johny Bravo",
"ComplexProperty":100
}
Danke für Ihre Antwort. Ich habe an so etwas gedacht, aber was ist, wenn A und B aus einer 3rd-Party-Bibliothek kommen? –
@MihailShishkov macht es keinen Unterschied. Sie haben die Methode get, so dass Sie den gewünschten Wert haben können. wie public int complexValue => SomeMethod (someObjects); –
Wenn Sie A und B in einer Drittanbieter-Bibliothek haben, können Sie ihren Code nicht ändern. Sie können also nicht einfach neue Attribute oder Eigenschaften hinzufügen. Ihr Vorschlag wird funktionieren, wenn ich nur um die Serialisierung herum einen Adapter für A anbiete, was mir sehr viel Arbeit bedeutet. Stellen Sie sich vor, wenn A eine echte Klasse mit vielen Eigenschaften ist :) –