2017-04-11 168 views
1

我有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;} 
} 

有什麼樣的類型是行propperty?

+2

你是什麼意思'與數字作爲類型'?你的問題不清楚 – yonisha

+0

使你的''行''屬性成爲'字典'。請參閱[使用ID作爲名稱從json對象創建一個強類型的c#對象](http://stackoverflow.com/q/34213566/3744182)和[如何解析會導致非法C#標識符的JSON字符串?]( http://stackoverflow.com/a/24536564/3744182)。 – dbc

+0

- > dbc:把你的評論作爲answear,我會標記爲正確的answear –

回答

2

答案是

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

,並使用

JsonConvert.DeserializeObject<RootObject>(json); 

反序列化。 JsonConvert來自Newtonsoft庫。

0

好像你正在尋找的是int型或INT32類型:

//Assumes you are using Newtonsoft JSON Nuget Package 

List<int> products = null; 

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

應工作 - 但你在計算器上找到所有的代碼應該被看作是僞代碼。這至少應該讓你指向正確的方向。希望它有幫助!

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': '[email protected]', 
    'Active': true, 
    'CreatedDate': '2013-01-20T00:00:00Z', 
    'Roles': [ 
    'User', 
    'Admin' 
    ] 
}"; 

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

Console.WriteLine(account.Email);