ServiceStack DeserializeFromString不是设置字段

时间:2013-07-10 17:04:19

标签: c# json servicestack json-deserialization

我正在尝试使用ServiceStack.Text将JSON字符串“{Hints:6}”反序列化到一个类中。以下是测试用例。问题是控制台打印出0而不是6.所以似乎' HintsCount '类中的' Hints '字段没有被设置为新值。

public class HintsCount
{
    public int Hints { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        var hintsCount = JsonSerializer.DeserializeFromString<HintsCount>("{Hints:6}");

        Console.WriteLine(hintsCount.Hints);

        Console.ReadLine();
    }
}

控制台打印出'0'而不是预期的'6'。

知道为什么会这样吗?

2 个答案:

答案 0 :(得分:1)

试试这个:

var hintsCount = JsonSerializer.DeserializeFromString<HintsCount>(@"{""Hints"":6}");

var hintsCount = JsonSerializer.DeserializeFromString<HintsCount>("{\"Hints\":6}");

答案 1 :(得分:1)

注意这是无效的JSON:

"{Hints:6}"

JSON requires引用对象文字的所有属性名称,改为:

"{\"Hints\":6}"

您可以序列化模型以找出正确的JSON应该是什么,例如:

new HintsCount { Hints = 6 }.ToJson().Print();