Json.Net学习笔记

官方网站:http://james.newtonking.com/json

Json.Net是.net环境下操作json数据的首选工具,速度快,操作简单,一般简单的操作,一看就会了

实验一:一个待序列化类中哪些属性会被json化?

public class ClassA
{
    private string s;
    public ClassA()
    {
        s = "10";
    }
}

ClassA a = new ClassA();
string str = JsonConvert.SerializeObject(a);
Console.WriteLine(str);

//输出: {}
public class ClassA
{
    public string s;
    public ClassA()
    {
        s = "10";
    }
}

ClassA a = new ClassA();
string str = JsonConvert.SerializeObject(a);
Console.WriteLine(str);

//输出:{"s":"10"}
public class ClassA
{
    private string s;
    public string S { get { return s; } }
    public ClassA()
    {
        s = "10";
    }
}

ClassA a = new ClassA();
string str = JsonConvert.SerializeObject(a);
Console.WriteLine(str);

//输出: {"S":"10"}

结论一:所有public的属性和变量都会被Json化

实验二:若存在类的继承关系,序列化时是否能识别到子类?

public class ClassA
{
    public string S { get { return "10"; } }
}
public class ClassB:ClassA
{
    public string S2 { get { return "20"; } }
}

ClassA a = new ClassB();
string str = JsonConvert.SerializeObject(a);
Console.WriteLine(str);

//输出:{"S2":"20","S":"10"}
List<ClassA> list = new List<ClassA>();
list.Add(new ClassA());
list.Add(new ClassB());
string str = JsonConvert.SerializeObject(list);
Console.WriteLine(str);

//输出: [{"S":"10"},{"S2":"20","S":"10"}]

结论二:当存在继承时,json化时选择使用子类

...我写给以后的自己看的

原文地址:https://www.cnblogs.com/william7neral/p/3988080.html