ServiceStack.Text将字符串反序列化为单个对象null引用

时间:2015-06-05 01:05:05

标签: c# .net json servicestack

我有以下代码。使用JSON.NET,它可以正常工作,我可以将字符串反序列化为CustomMaker对象。使用ServiceStack.Text,我得到null。我试过做{get;组;并删除和添加构造函数。

使用JSON.NET,它就像JsonConvert.DeserializeObject(xString)一样工作;

知道为什么这不适用于ServiceStack.Text?

for

编辑:此代码也产生null:

    static void Main(string[] args) {
        string xString = "{\"error\":\"Invalid token 1 #556264\"}";
        Console.WriteLine(xString);
        CustomMaker xSLBM = TypeSerializer.DeserializeFromString<CustomMaker>(xString);
        Console.WriteLine(string.IsNullOrWhiteSpace(xSLBM.error) ? "error is null" : xSLBM.error);
        Console.ReadLine();
    }

    [Serializable]
    public class CustomMaker {
        public int UserID;
        public String error;
        public CustomMaker() { }
    }

1 个答案:

答案 0 :(得分:3)

默认情况下,ServiceStack仅序列化公共属性,因此您可以重构DTO以包含属性,例如:

0.01

或者,如果您想序列化公共字段,可以使用以下命令指定:

public class CustomMaker {
    public int UserID { get; set; }
    public String error { get; set; }
}

您还需要使用JsConfig.IncludePublicFields = true; 类,例如:

JsonSerializer

CustomMaker xSLBM = JsonSerializer.DeserializeFromString<CustomMaker>(xString); string.ToJson()扩展方法,例如:

T.FromJson<T>(string)

CustomMaker xSLBM = xString.FromJson<CustomMaker>(); 类仅用于序列化/反序列化JSV Format,而不是JSON。