c# – 具有内部属性的JSON Serializer对象

我有一些内部属性的类,我想将它们序列化为json.我怎么能做到这一点?
例如

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

使用保存它

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

我明白了

{  
"$type": "SideSlopeTest.Foo, SideSlopeTest",
"Description": "Foo Example"
}
使用[JsonProperty()]属性标记内部属性:

public class Foo
{
    [JsonProperty()]
    internal int num1 { get; set; }
    [JsonProperty()]
    internal double num2 { get; set; }
    public string Description { get; set; }

    public override string ToString()
    {
        if (!string.IsNullOrEmpty(Description))
            return Description;

        return base.ToString();
    }
}

然后,测试:

        Foo f = new Foo();
        f.Description = "Foo Example";
        f.num1 = 101;
        f.num2 = 202;
        JsonSerializerSettings settings = new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.All };

        var jsonOutput = JsonConvert.SerializeObject(f, Formatting.Indented, settings);

        Debug.WriteLine(jsonOutput);

我得到以下输出:

{
  "$type": "Tile.JsonInternalPropertySerialization.Foo, Tile",
  "num1": 101,
  "num2": 202.0,
  "Description": "Foo Example"
}

(其中“Tile.JsonInternalPropertySerialization”和“Tile”是我正在使用的命名空间和程序集名称).

https://stackoverflow.com/questions/26873755/json-serializer-object-with-internal-properties

转载注明原文:c# – 具有内部属性的JSON Serializer对象