【发布时间】:2017-05-27 13:58:43
【问题描述】:
在反序列化以下 json 响应时,我设法获取订阅者 ID、电子邮件和状态,这很容易,因为这些名称始终相同,并且不依赖于列表中的特定设置。但是如何反序列化合并字段和在不同列表中具有不同名称的兴趣?
{ "members": [ {
"id": "f777bbffab8d1ceca8b757df63c47cb8",
"email_address": "urist.mcvankab+1@freddiesjokes.co",
"unique_email_id": "882e9bec19",
"status": "subscribed",
"merge_fields":{
"FNAME": "",
"LNAME": "" },
"interests":{
"9143cf3bd1": true,
"3a2a927344": false,
"f9c8f5f0ff": false,
"f231b09abc": true,
"bd6e66465f": false },
//And so on...
如何更改我的类以反序列化响应?
我的会员班
public class Member
{
public string id { get; set; }
public string email_address { get; set; }
public string status { get; set; }
//public List<MergeField> mergeFields { get; set; }
//public List<Interests> interests { get; set; }
}
MergeField 指的是我的旧 MergeField 类,其中的字段是硬编码的
public class MergeField
{
public string FNAME { get; set; }
public string LNAME { get; set; }
public string ADDRESS { get; set; }
public string MERGE4 { get; set; }
}
但我想在请求列表的合并字段时使用相同的两个 Mergefield(s) 类来反序列化 json 响应。
public class MergeFields
{
public List<Mergefield> merge_fields { get; set; }
public string list_id { get; set; }
public int total_items { get; set; }
}
public class Mergefield
{
public string merge_id { get; set; }
public string tag { get; set; }
public string name { get; set; }
public string list_id { get; set; }
}
我找到了这个答案How do deserialize JSON with non-standard (and varying) property names,但我不知道如何在我的场景中使用它。
【问题讨论】:
-
您真的需要每个合并字段的
merge_id、tag和name,还是只想知道每个成员的所有合并字段的值? -
抱歉不准确。如果可能的话,我想两者兼得,但最重要的是价值观。因为我可以通过 list/
/merge-field 调用获取合并字段的名称、标签和 ID。
标签: c# json json-deserialization mailchimp-api-v3.0