0

おそらく私はこれを間違ってやっていますが、失敗している次のテストがあります:

[Test]
public void Can_Deserialize_List()
{
    string json = @"
    {
        ""a"": [
            {
                ""b"":1,
                ""c"":false
            },{
                ""b"":2,
                ""c"":true
            }
        ]
    }";

    JsonObject container = JsonSerializer.DeserializeFromString<JsonObject>(json);
    List<JsonObject> aList = JsonSerializer.DeserializeFromString<List<JsonObject>>(container["a"]);
    Assert.True(aList.Count == 2);
    Assert.True(aList[0]["b"] == "1");
    Assert.True(aList[0]["c"] == "false");
    Assert.True(aList[1]["b"] == "2");
    Assert.True(aList[1]["c"] == "true");
}

これはサービス スタックのバグですか? それとも私の勘違い?それが誤解である場合、自分が正しく行っていることを行うにはどうすればよいでしょうか?

4

1 に答える 1

0

次のようにコードを書き直して解決しました。

[Test]
public void Can_Deserialize_List()
{
    string json = @"
    {
        ""a"": [
            {
                ""b"":1,
                ""c"":false
            },{
                ""b"":2,
                ""c"":true
            }
        ]
    }";

    JsonObject container = JsonObject.Parse(json);
    JsonArrayObjects aList = container.ArrayObjects("a");
    Assert.True(aList.Count == 2);
    Assert.True(aList[0]["b"] == "1");
    Assert.True(aList[0]["c"] == "false");
    Assert.True(aList[1]["b"] == "2");
    Assert.True(aList[1]["c"] == "true");
}

JsonObject は内部で JSV フォーマットを使用しているように見えますが、文字列値が JSON フォーマットであるとは思わないでください。代わりに、JsonObject.Object および JsonObject.ArrayObjects メソッドを使用して、内部オブジェクト/配列を取得する必要があります。

于 2013-08-14T15:35:12.320 に答える