如何将 JSON 数据格式化为动态生成对象属性的 C# 对象
How to format JSON data as C# object where object properties are generated dynamically
我不确定我的主题是否正确描述了我的问题,但希望是这样。
我目前正在开展一个项目,该项目需要与 Mailchimp
集成,成员对象之一 属性 称为 "merge_fields",其中 returns 一个 [=键值对的 16=]。
返回Json
数据(只为简单起见部分)返回如下:
"members": [{
"id": "9ff9398a92599aca00401da0fb9f0339da",
"email_address": "myemail@mydomain.com",
"unique_email_id": "90ds8927dae",
"email_type": "html",
"status": "subscribed",
"merge_fields": {
"FNAME": "My FirstName",
"LNAME": "My LastName",
"ADDRESS": "My Address",
"PHONE": "+555 1234 5678",
"MMERGE5": ""
},
"stats": {
"avg_open_rate": 0,
"avg_click_rate": 0
},
"ip_signup": "",
"timestamp_signup": "",
...
如您所见,"merge_fields" 属性 是一个密钥对值数组,其中密钥是动态设置的,值也是动态设置的,但我不确定如何在.NET
这样就可以 deserialized
正确使用 .NET
NewtonSoft
.
在我的会员class中,MergeFields属性定义如下:
[JsonProperty("merge_fields")]
public MailchimpMergeFields MergeFields { get; set; }
我的 MailchimpMergeFields class 定义如下:
public class MailchimpMergeFields
{
/// <summary>
/// An individual merge var and value for a member.
/// </summary>
[JsonProperty("merge_fields")]
public List<KeyValuePair<object, object>> MergeFields { get; set; }
public MailchimpMergeFields()
{
MergeFields = new List<KeyValuePair<object, object>>();
}
}
问题是当数据为deserialized
时,returns merge_fields 属性.
数组中的第0个元素
知道我是如何反序列化的:
"merge_fields": {
"FNAME": "My FirstName",
"LNAME": "My LastName",
"ADDRESS": "My Address",
"PHONE": "+555 1234 5678",
"MMERGE5": ""
},
到 KeyValuePair(或 KeyValuePair)列表并将其存储在 .NET
class
谢谢。
这个 json 模式很容易转换成字典
[JsonProperty("merge_fields")]
public Dictionary<string, string> MergeFields { get; set; }
我不确定我的主题是否正确描述了我的问题,但希望是这样。
我目前正在开展一个项目,该项目需要与 Mailchimp
集成,成员对象之一 属性 称为 "merge_fields",其中 returns 一个 [=键值对的 16=]。
返回Json
数据(只为简单起见部分)返回如下:
"members": [{
"id": "9ff9398a92599aca00401da0fb9f0339da",
"email_address": "myemail@mydomain.com",
"unique_email_id": "90ds8927dae",
"email_type": "html",
"status": "subscribed",
"merge_fields": {
"FNAME": "My FirstName",
"LNAME": "My LastName",
"ADDRESS": "My Address",
"PHONE": "+555 1234 5678",
"MMERGE5": ""
},
"stats": {
"avg_open_rate": 0,
"avg_click_rate": 0
},
"ip_signup": "",
"timestamp_signup": "",
...
如您所见,"merge_fields" 属性 是一个密钥对值数组,其中密钥是动态设置的,值也是动态设置的,但我不确定如何在.NET
这样就可以 deserialized
正确使用 .NET
NewtonSoft
.
在我的会员class中,MergeFields属性定义如下:
[JsonProperty("merge_fields")]
public MailchimpMergeFields MergeFields { get; set; }
我的 MailchimpMergeFields class 定义如下:
public class MailchimpMergeFields
{
/// <summary>
/// An individual merge var and value for a member.
/// </summary>
[JsonProperty("merge_fields")]
public List<KeyValuePair<object, object>> MergeFields { get; set; }
public MailchimpMergeFields()
{
MergeFields = new List<KeyValuePair<object, object>>();
}
}
问题是当数据为deserialized
时,returns merge_fields 属性.
知道我是如何反序列化的:
"merge_fields": {
"FNAME": "My FirstName",
"LNAME": "My LastName",
"ADDRESS": "My Address",
"PHONE": "+555 1234 5678",
"MMERGE5": ""
},
到 KeyValuePair(或 KeyValuePair)列表并将其存储在 .NET
class
谢谢。
这个 json 模式很容易转换成字典
[JsonProperty("merge_fields")]
public Dictionary<string, string> MergeFields { get; set; }