使用数字作为属性名称反序列化JSON

时间:2017-04-11 16:46:32

标签: c# json

我有这样的JSON:

{"rows":
    {
        "1":{"rowNumber":1,"productID":"100"},
        "2":{"rowNumber":2,"productID":"101"},
        "3":{"rowNumber":3,"productID":"102"}
    }
}

我需要构建域模型。

例如:

class Row 
{
    public int rowNumber{get; set;}
    public string productID{get; set;}
}

根对象

class RootObject
{
   public ? ? rows {get; set;}
}

哪种类型必须是行属性?

3 个答案:

答案 0 :(得分:4)

答案是

public Dictionary<int, Row> rows { get; set; }

并使用

JsonConvert.DeserializeObject<RootObject>(json);

用于反序列化。 JsonConvert来自Newtonsoft库。

答案 1 :(得分:0)

好像你正在寻找int类型或int32类型:

//Assumes you are using Newtonsoft JSON Nuget Package

List<int> products = null;

products = JsonConvert.DeserializeObject<List<int>>(json);

应该可以工作 - 但是你在StackOverflow上找到的所有代码都应该被视为伪代码。这至少应该指向正确的方向。希望它有所帮助!

答案 2 :(得分:0)

你的问题不明确,但这可能有用

public class Account
{
    public string Email { get; set; }
    public bool Active { get; set; }
    public DateTime CreatedDate { get; set; }
    public IList<string> Roles { get; set; }
};
string json = @"{
   'Email': 'james@example.com',
   'Active': true,
   'CreatedDate': '2013-01-20T00:00:00Z',
  'Roles': [
     'User',
     'Admin'
   ]
 }";

Account account = JsonConvert.DeserializeObject<Account>(json);

Console.WriteLine(account.Email);