1

我可以将 ServiceStack Deserialize json 值 1 设为 true 吗?
这是一个显示我想要做的单元测试。这可能吗?如果是这样怎么办?

public class Foo
{
    public bool isWorking { get; set; }
}

...

[Test]
public void Deserialise1AsBoolean()
{
    var json = @"{""isWorking"": 1}";
    var myFoo = json.FromJson<Foo>();
    Assert.IsTrue(myFoo.isWorking);
}
4

2 回答 2

1

这现在已内置到 ServiceStack.Text 中,此提交可从 v3.9.55+ 获得。

于 2012-06-14T17:06:23.893 回答
0

编辑这是我的解决方案,但也请查看 Mythz,因为我相信这也可以。

我反序列化为自定义结构MyBool而不是bool.
这是 MyBool 结构的代码。

public struct MyBool
{
    public bool Value { get; set; }

    public static MyBool Parse(string value)
    {
        return new MyBool {Value = (value == "1" || value=="true")};
    }

    public override string ToString()
    {
        return Value.ToString(CultureInfo.InvariantCulture);
    }

    public static implicit operator bool(MyBool lValue)
    {
        return lValue.Value;
    }

并将 Foo 更改为:

public class Foo
{
    public MyBool isWorking { get; set; }
}

欢迎批评。

于 2012-06-17T21:41:20.747 回答