也许我做错了,但我有以下测试失败:
[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");
}
这是服务堆栈中的错误吗?或者是我的误会?如果这是一个误解,那么我将如何正确地做我正在做的事情?
答案 0 :(得分: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方法来获取内部对象/数组。