我有一个来自第三方API的JSON类结构(只显示了问题部分):
"template": {
"name": "MovieTemplate",
"ruleName": "Movie Template",
"zones": {
"Products": {
"type": "Record",
"name": "Products",
"content": "www.imagescloudsite.com/blahblah.gif"
"records": [ … ]
},
"URL": {
"type":"DVD",
"name":"Bundle"
"content": "www.imagescloudsite.com/blahblah.gif"
}
}
}
"区域"属性可以包含许多属性" 产品"," 网址","超人",&# 34;笛卡尔"等...
但是,我不知道哪些会有多少,因为这些是由我们的内容人员在一个特殊的控制面板中添加的。 Newtonsoft Deserializer抱怨,因为我有这样的模型,它显然没有捕获区域名称,如' Products'和'网址':
public class Zone
{
public string Type { get; set; }
public string Name { get; set; }
public string Content { get; set; }
}
public class Template
{
public string Name { get; set; }
public string RuleName { get; set; }
public List<Zone> Zones { get; set; }
}
关于如何使用NewtonSoft捕获区域名称的任何想法? 感谢。
答案 0 :(得分:3)
将您的区域属性设置为字典,因为您事先不知道密钥,但确实知道其内容结构。
喜欢这样
$ cat x.c
asm (".globl A");
asm ("A = 0x42");
$ clang -c x.c
$ nm x.o
0000000000000042 A A
答案 1 :(得分:1)
如果您将Template类更改为以下内容该怎么办:
public class Template
{
public string Name { get; set; }
public string RuleName { get; set; }
public Dictionary<string, Zone> Zones { get; set; }
}
然后,您可以通过条目的键访问该名称。
答案 2 :(得分:0)
使用动态将是一个不错的选择
/[A-Z]{1,58}/