ServiceStack JsonSerializer没有序列化公共成员

时间:2013-06-26 08:51:13

标签: c# json serialization servicestack jsonserializer

我正在尝试使用ServiceStack.Redis,我注意到当我使用公共成员存储对象并尝试稍后获取它时,我得到null。

我查了一下,发现ServiceStack.Redis正在使用ServiceStack.JsonSerializer,所以我试图创建一个测试用例,我注意到ServiceStack.JsonSerializer没有序列化公共成员:

        public class ClassA
        {
            public string Id;

            public string Id2 { get; set; }
        }


        static void Main(string[] args)
        {
            ClassA t = new ClassA();
            t.Id = Guid.NewGuid().ToString("n");
            t.Id2 = Guid.NewGuid().ToString("n");

            string a = JsonSerializer.SerializeToString<ClassA>(t);

            ClassA t2 = JsonSerializer.DeserializeFromString<ClassA>(a);

            Console.WriteLine("id " + t2.Id);
            Console.WriteLine("id2 " + t2.Id2);

            Console.ReadLine();
        }

正如您所看到的(如果您测试该代码),Id(公共成员)为空,Id2(公共属性)与我们输入的字符串相同。

那我在做错什么?

谢谢!

1 个答案:

答案 0 :(得分:5)

您可以告诉JsonSerializer包含公共字段。

ServiceStack.Text.JsConfig.IncludePublicFields = true;