2

我正在尝试将以下 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);

对象instance已创建,其中有 2 个 item 对象,instance.Items但它们的所有属性均为 null。

TIA

4

2 回答 2

6

您在 Items 值周围加上引号,因此将它们解析为字符串而不是数组/列表。删除它们即可获胜。

"Items":[
       {"Uri":"http://localhost/foo.jpg","Width":234,"Height":313},
       {"Uri":"http://localhost/bar.jpg","Width":234,"Height":174}]
于 2013-04-04T19:55:52.863 回答
3

那不是有效的 JSON。Items 值周围的引号不应存在。

于 2013-04-04T19:56:06.837 回答