【发布时间】:2013-06-23 07:47:57
【问题描述】:
我正在尝试使用 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(公共属性)与我们输入的字符串相同。
那么我做错了什么?
谢谢!
【问题讨论】:
-
默认 JsonSerializer 仅序列化属性。检查msdn.microsoft.com/pl-pl/library/bb410770.aspx 以获取有关可用于影响序列化过程的属性的信息。
标签: c# json serialization servicestack jsonserializer