Ich habe Klasse mit einigen internen Eigenschaften und ich möchte sie in JSON auch serialisieren. Wie kann ich das erreichen? Zum BeispielJSON Serializer-Objekt mit internen Eigenschaften
public class Foo
{
internal int num1 { get; set; }
internal double num2 { get; set; }
public string Description { get; set; }
public override string ToString()
{
if (!string.IsNullOrEmpty(Description))
return Description;
return base.ToString();
}
}
es
Foo f = new Foo();
f.Description = "Foo Example";
JsonSerializerSettings settings = new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.All };
string jsonOutput = JsonConvert.SerializeObject(f, Formatting.Indented, settings);
using (StreamWriter sw = new StreamWriter("json_file.json"))
{
sw.WriteLine(jsonOutput);
}
mit Speichern
I
{
"$type": "SideSlopeTest.Foo, SideSlopeTest",
"Description": "Foo Example"
}
Normalerweise sollen interne Eigenschaften nicht die Grenzen der aktuellen Baugruppe verlassen und somit serialisiert werden. Warum sollten Sie das tun? Wenn Sie eine korrekte JSON-Repräsentation wünschen, benötigen Sie möglicherweise ein DTO, um Ihre internen/privaten Daten zu ordnen und dann zu serialisieren. –
+1 was @DarinDimitrov sagte. Aber wenn Sie es wirklich tun wollen, glaube ich, dass Sie 'DefaultContractResolver' ableiten müssen, damit es auch nicht-öffentliche Eigenschaften sieht. –
mögliches Duplikat von [JSON.Net: Erzwinge die Serialisierung aller privaten Felder und aller Felder in Unterklassen] (http://stackoverflow.com/questions/24106986/json-net-force-serialization-of-all-private- fields-and-all-fields-in-classe) –