为什么servicestack不能将这个JSON反序列化为C#?

时间:2013-04-04 19:52:31

标签: c# json deserialization servicestack

我正在尝试将以下JSON表示反序列化为强类型对象。我可以从c# - >序列化它。 json,但反之亦然。

C#

public class Package 
{
   public Guid Id {get;set;}
   public List<string> Email {get;set;}
   public List<Items> Items {get;set;}
}

public class Items
{
   public string Uri {get;set;}
   public int Width {get;set;}
   public int Height {get;set;}
}

JSON

{
    "Id":"84fd8751-6107-41af-9473-65aae51e042a",
    "Email":[
    "j@t.com"
    ],
    "Items":"[
       {"Uri":"http://localhost/foo.jpg","Width":234,"Height":313},
       {"Uri":"http://localhost/bar.jpg","Width":234,"Height":174}]"
}

反序列化代码

var instance = JsonSerializer.DeserializeFromString<Package>(jsonData);

创建了对象instanceinstance.Items中有2个项目对象,但它们的所有属性都为空。

TIA

2 个答案:

答案 0 :(得分:6)

您在Items值周围有引号,因此将它们解析为字符串而不是数组/列表。删除它们赢得胜利。

"Items":[
       {"Uri":"http://localhost/foo.jpg","Width":234,"Height":313},
       {"Uri":"http://localhost/bar.jpg","Width":234,"Height":174}]

答案 1 :(得分:3)

这不是有效的JSON。项目值周围的引号不应该在那里。