反序列化JSON列表

时间:2016-02-18 15:48:28

标签: c# arrays json list

我正在尝试使用JsonConvert反序列化一些Json。我想要处理的JSON示例是:

 2  {
 3    'Name': 'Product 1',
 4    'ExpiryDate': '2000-12-29T00:00Z',
 5    'Price': 99.95,
 6    'Sizes':{ 'Tall': 30
                'ExtraTall':40
              }
 7  },
 8  {
 9    'Name': 'Product 2',
10    'ExpiryDate': '2009-07-31T00:00Z',
11    'Price': 12.50,
12    'Sizes': null
13  }

我已经尝试了一些类似的东西:

var handlerLocal= JsonConvert.DeserializeObject <Dictionary <string,Dictionary<string,string>>>(z);

直到现在我只使用这个处理简单列表:

var handlerLocal = JsonConvert.DeserializeObject<FriendsHandler>(z);

FriendHandler就像一个模特。但在这个新案例中,我在List中有一个List,这就是杀了我。

任何人都可以帮助我吗? 最好的问候

3 个答案:

答案 0 :(得分:0)

通常使用INSERT Course (Course_ID,Course_Name,Full_Part_Time,Course_Fees,Course_Leader) Values (1,'Radio Production','Full Time','Yes','Rick Rubin'), (2, 'Marketing','Part Time','NO','Gavin Evans'), (3,'Business Information Systemys','Full Time','Yes','Liam Malone'), (4,'Mixology','Full Time','No','Slim Denby'), (5,'Business Studies','Part Time','Yes','John Doe'); ,您可以编写一个与您正确解析的对象匹配的对象,然后使用DeserializeObject。

在这种情况下,您提供的JSON无效。在这种情况下它会是一本字典:

JSON.net

我认为它应该是一个数组,这意味着它应该被{'thing1': { 'Name': 'Product 1', 'ExpiryDate': '2000-12-29T00:00Z', 'Price': 99.95, 'Sizes':{ 'Tall': 30 'ExtraTall':40 } }, 'thing2': { 'Name': 'Product 2', 'ExpiryDate': '2009-07-31T00:00Z', 'Price': 12.50, 'Sizes': null }} 包围。

要解析此问题,请执行以下操作:

[]

答案 1 :(得分:0)

在尝试反序列化JSON时,我发现最好使用Json2Sharp.com创建包含数据的类,但是您提供的JSON无效,因此无法创建类从此。

如果你能找到一些有效的JSON,这个工具将为你处理其余的工作。

答案 2 :(得分:0)

创建一个这样的模型:

public class Product
{
    public string Name { get; set; }
    public DateTime ExpiryDate { get; set; }
    public decimal Price { get; set; }
    public Dictionary<string, int> Sizes { get; set; }
}

获取您的JSON

var productsJson = << Call some repo that returns json string >>

然后致电

var products = JsonConvert.DeserializeObject<List<Product>>(productsJson);

注意:您需要先使JSON有效,目前在语法上是不正确的

****** ******* EDIT

问题需要更新(见评论),你的模型看起来像这样

public class Self
{
    public string DeviceID { get; set; }
    public string TimeStamp { get; set; }
}

public class Location
{
    public string RoomID { get; set; }
    public string Room { get; set; }
}

public class Friend
{
    public string IdUser { get; set; }
    public string Name { get; set; }
    public Location Location { get; set; }
}

public class RootObject
{
    public Self Self { get; set; }
    public List<Friend> Friends { get; set; }
}

然后

var products = JsonConvert.DeserializeObject<RootObject>(productsJson);