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 に答える