我正在尝试创建一个符合JSON.NET的json结构的模型:第一项...
{
"190374": {
"vid": 190374,
"canonical-vid": 190374,
"portal-id": 62515,
"is-contact": true,
"profile-token": "AO_T-mN1n0Mbol1q9X9UeCtRwUE1G2GFUt0VVxCzpxUF1LJ8L3i75x9NmhIiS0K9UQkx19bShhlUwlIujY4pSXAFPEfDG-k9n8BkbftPw6Y5oM3eU5Dc_Mm-5YNJTXiWyeVSQJAN_-Xo",
"profile-url": "https://app.hubspot.com/contacts/62515/lists/public/contact/_AO_T-mN1n0Mbol1q9X9UeCtRwUE1G2GFUt0VVxCzpxUF1LJ8L3i75x9NmhIiS0K9UQkx19bShhlUwlIujY4pSXAFPEfDG-k9n8BkbftPw6Y5oM3eU5Dc_Mm-5YNJTXiWyeVSQJAN_-Xo/",
"properties": {
"phone": {
"value": "null"
},
"hs_social_linkedin_clicks": {
"value": "0"
},
"hs_social_num_broadcast_clicks": {
"value": "0"
},
"hs_social_facebook_clicks": {
"value": "0"
},
"state": {
"value": "MA"
},
"createdate": {
"value": "1380897795295"
},
"hs_analytics_revenue": {
"value": "0.0"
},
"lastname": {
"value": "Mott"
},
"company": {
"value": "HubSpot"
}
},
"form-submissions": [],
"identity-profiles": []
},
"form-submissions": [],
"identity-profiles": []
},
**next similar entry**
然后,我尝试使用以下列表绑定:
public class HubSpotEmailRqst
{
public int vid { get; set; }
public int canonical-vid { get; set; }
public int portal-id { get; set; }
public bool is-contact { get; set; }
public String profile-token { get; set; }
public String profile-url { get; set; }
public Dictionary<string, string> properties { get; set; }
public Dictionary<string,string> form-submissions { get; set; }
public Dictionary<string,string> identity-profiles { get; set; }
}
我不确定这是否会绑定,但是我无法摆脱我们不能在字段名称中拥有连字符的事实,我该如何解决?
有两种与连字符使用属性的方法:
-
根据C#规则的名称属性,但用
[JsonProperty("property-name")]
属性装饰它们。 -
使用修改属性名称的自定义合同解析器。例如,如果JSON中的所有属性都始终命名,则可以使用REGEX将Pascalcase C#属性名称更改为较低的JSON属性名称。请参阅JSON.NET的
CamelCasePropertyNamesContractResolver
,例如实现。
如果我正确地理解了这个问题,那么您对C#程序中的字段名称中的连字符感到不安?为什么不使用骆驼来识别字段?而不是is-contact
使用'isContact'。而不是canonical-vid
。使用 canonicalVid.
当然,名称可能会 look 不同,但是对于程序员来说,含义应清楚。