3

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 (パブリック メンバー) は null であり、Id2 (パブリック プロパティ) は入力した文字列と同じです。

それで、私は何を間違っていますか?

ありがとう!

4

1 に答える 1

5

JsonSerializer に public フィールドを含めるように指示できます。

ServiceStack.Text.JsConfig.IncludePublicFields = true;
于 2013-06-26T13:41:21.660 に答える