JSON-Serializer-Objekt mit den internen Eigenschaften

Ich habe Klasse mit einigen internen Eigenschaften und ich möchte die Serialisierung in json als gut. Wie kann ich dies erreichen?
Zum Beispiel

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();
    }
}

Sparen Sie mit

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);
 }

Bekomme ich

{  
"$type": "SideSlopeTest.Foo, SideSlopeTest",
"Description": "Foo Example"
}
  • In der Regel interne Eigenschaften sind nicht dazu gedacht, zu verlassen und die Grenzen des aktuellen Montage-und somit serialisiert. Warum würden Sie brauchen, das zu tun? Wenn Sie möchten, eine korrekte JSON-Darstellung benötigen Sie möglicherweise einen DTO zum anzeigen Ihrer internen/privaten Sachen und dann serialisieren.
  • +1 was @DarinDimitrov sagte. Aber wenn Sie wirklich wollen, es zu tun, ich glaube, Sie brauchen, um eine Unterklasse DefaultContractResolver zu machen, schauen Sie bei nicht-öffentlichen Eigenschaften als gut.
  • möglich, Duplikat der JSON.Net: Force Serialisierung aller privaten Felder und Felder, die in sub-Klassen
  • Markieren Sie mit der [JsonProperty()] - Attribut.
  • wenn die Klasse ist auch die interne markieren Sie es mit [JsonObject()]
InformationsquelleAutor Farukh | 2014-11-11
Schreibe einen Kommentar