我想将JSON数据解析为C#
数据是:
"{\"data\":
{\"6\":{\"id\":\"6\",\"reward_definition_id\":12,\"person_id\":164305,\"issue_date\":\"2015-10-08\",\"expiry_date\":\"2015-11-08\",\"amount_initial\":20,\"amount_remaining\":0,\"
_member_details\":{\"id\":\"164305\",\"first_name\":\"test\",\"last_name\":\"one\",\"email\":\"testing1@example.com\",\"_email_trigger\":\"Y\",\"_email_bounced\":\"N\",\"_email_promo\":\"Y\",\"_app_notify\":\"Y\",\"_sms_status\":\"Y\",\"active\":\"Y\"},
\"_store_details\":null,\"_staff_details\":null,\"_product_details\":null},
\"5\":{\"id\":\"5\",\"reward_definition_id\":12,\"person_id\":164305,\"issue_date\":\"2015-10-08\",\"expiry_date\":\"2015-11-08\",\"amount_initial\":20,\"amount_remaining\":20,\"
_member_details\":{\"id\":\"164305\",\"first_name\":\"test\",\"last_name\":\"one\",\"email\":\"testing1@example.com\",\"_email_trigger\":\"Y\",\"_email_bounced\":\"N\",\"_email_promo\":\"Y\",\"_app_notify\":\"Y\",\"_sms_status\":\"Y\",\"active\":\"Y\"},
\"_store_details\":null,\"_staff_details\":null,\"_product_details\":null}
}}"
如何使用此数据列表的Dictionary创建一个类,并将其反序列化为C#类。我试图使用以下类来存储这个json数据,类是
public class JsonRewardResponse
{
public Dictionary<int, JsonRewardDetails> mydictionary { get; set; }
}
public class JsonRewardDetails
{
public string Id;
public int reward_definition_id;
public int person_id;
public string issue_date;
public string expiry_date;
public int amount_initial;
public int amount_remaining;
public JsonMemberDetails member;`enter code here`
public int _store_details;
public int _staff_details;
public int product_details;
}
public class JsonMemberDetails
{
public string Id;
public string first_name;
public string last_name;
public string email;
public string _email_trigger;
public string _email_bounced;
public string _email_promo;
public string _app_notify;
public string _sms_status;
public string active;
}
请提前致谢。
Bharath AK
答案 0 :(得分:0)
您没有说出您使用的是什么序列化程序,因此我给出的建议与所有JSON序列化程序相关。
这里有一些问题:
属性mydictionary
的名称应为data
,因为这是JSON中的内容。
product_details
应重命名为_product_details
。
_store_details
,_staff_details
和_product_details
被声明为int
,但它们在JSON中显示为null
。因此,它们需要是c#中的某种可空类型,例如int?
或string
。 (事实上,这些在JSON中为空,表明但不能证明,当非空时它们不是整数类型。)
member
应重命名为_member_details
。
因此:
public class JsonRewardResponse
{
public Dictionary<int, JsonRewardDetails> data { get; set; }
}
public class JsonRewardDetails
{
public string Id;
public int reward_definition_id;
public int person_id;
public string issue_date;
public string expiry_date;
public int amount_initial;
public int amount_remaining;
public JsonMemberDetails member;
public int? _store_details;
public int? _staff_details;
public int? _product_details;
}
public class JsonMemberDetails
{
public string Id;
public string first_name;
public string last_name;
public string email;
public string _email_trigger;
public string _email_bounced;
public string _email_promo;
public string _app_notify;
public string _sms_status;
public string active;
}
使用这些修补程序,使用Json.NET,您可以执行以下操作:
var response = JsonConvert.DeserializeObject<JsonRewardResponse>(json);
(其他序列化程序可能还有其他问题。)
答案 1 :(得分:0)