Xyl*_*ynx 1 c# json list json.net deserialization
我有这个由第三方Web服务生成的JSON
{
"user_data": {
"123456789": {
"transactions_id": 123456789,
"transaction_date": "2015-07-08T18:31:28+01:00",
"reason_type": "REWARD",
"category": "categoryFoo",
"title": "titleFoo",
"description": "",
"reward_quantity": 5,
"reward_name": " foo"
},
"1234567891": {
"transactions_id": 1234567891,
"transaction_date": "2015-07-08T18:33:06+01:00",
"reason_type": "REWARD",
"category": "categoryFoo",
"title": "titleFoo",
"description": "",
"reward_quantity": 5,
"reward_name": " foo"
},
"1234567892": {
"transactions_id": 1234567892,
"transaction_date": "2015-07-08T18:35:00+01:00",
"reason_type": "REWARD",
"category": "categoryFoo",
"title": "titleFoo",
"description": "",
"reward_quantity": 5,
"issuers_name": " foo"
}
}
}
Run Code Online (Sandbox Code Playgroud)
交易金额将随着每个请求而变化,因此可能有3个像这样一次然后10个下一个.为了处理不同数量的事务,我理解您需要使用类似于此的列表public List<User> users { get; set; },用户与此类似
public class User
{
public int transactions_id { get; set; }
public string transaction_date { get; set; }
public string reason_type { get; set; }
public string category { get; set; }
public string title { get; set; }
public string description { get; set; }
public int reward_quantity { get; set; }
public string reward_name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
但是我确实认为这会有效,因为JSON的结构奇怪,每个"事务"都有ID作为名称.对不起,我不确定正确的术语,但我认为你应该能够获得要点.
这在JSON中并不是一个特别不寻常的结构.这应该被反序列化为Dictionary<string, User>:
public class Root
{
[JsonProperty("user_data")]
public Dictionary<string, User> Users { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后就像JsonConvert.DeserializeObject<Root>正常一样使用.
注意我是如何使用JsonProperty来指定在JSON中表示名称的方式,同时保留惯用的.NET属性名称 - 我建议你也在你的User类中这样做.
| 归档时间: |
|
| 查看次数: |
158 次 |
| 最近记录: |