有没有办法将具有动态名称的json响应反序列化到C#类中?
我调用了一个API,它返回带有动态属性名的json数据,我试图构建一个类,我可以将这个响应反序列化到其中,但是这个属性名让我很头疼有没有办法将具有动态名称的json响应反序列化到C#类中?,c#,regex,json,deserialization,C#,Regex,Json,Deserialization,我调用了一个API,它返回带有动态属性名的json数据,我试图构建一个类,我可以将这个响应反序列化到其中,但是这个属性名让我很头疼 "data": { "1": { "Item": { "id": "1", "name": "Item 1" } }, "2": { "Item": { "id": "2", "name": "Item 2" } }, "3": { "Item": {
"data": {
"1": {
"Item": {
"id": "1",
"name": "Item 1"
}
},
"2": {
"Item": {
"id": "2",
"name": "Item 2"
}
},
"3": {
"Item": {
"id": "3",
"name": "Item 3"
处理这种情况的最佳方法是什么?我正在尝试使用一个正则表达式来删除外部节点,但还没有成功
有什么帮助吗?这应该可以去掉它。它找到{的第一个出现,并从那里开始,因此结果字符串将是{……},而不是“varname”:{……}
myjson = jsonstring.Substring (jsonstring.IndexOf('{'));
这应该去掉它。它找到第一个出现的{,然后从那里开始,结果字符串将是{……},而不是“varname”:{……}
myjson = jsonstring.Substring (jsonstring.IndexOf('{'));
如果“1”和“2”是动态属性名,那么将“数据”放入字典中,而不是尝试使用RegEx操作响应,怎么样?之后您可以简单地通过字典进行枚举
public class Response
{
[JsonProperty("data")]
public Dictionary<string, ItemContainer> { get; set; }
}
public class ItemContainer
{
[JsonProperty("Item")]
public Item Item { get; set; }
}
公共类响应
{
[JsonProperty(“数据”)]
公共字典{get;set;}
}
公共类ItemContainer
{
[JsonProperty(“项目”)]
公共项项{get;set;}
}
如果“1”和“2”是动态属性名,那么将“数据”放入字典中,而不是尝试使用RegEx操作响应,怎么样?之后您可以简单地通过字典进行枚举
public class Response
{
[JsonProperty("data")]
public Dictionary<string, ItemContainer> { get; set; }
}
public class ItemContainer
{
[JsonProperty("Item")]
public Item Item { get; set; }
}
公共类响应
{
[JsonProperty(“数据”)]
公共字典{get;set;}
}
公共类ItemContainer
{
[JsonProperty(“项目”)]
公共项项{get;set;}
}
动态属性名称是什么?上面没有名称。这就是问题所在。动态属性名称是什么?上面没有名称。这就是问题所在。字典缺少属性名称,所以我在其中添加了“项”。我还实现了它,现在是“项”在执行以下操作后,响应内部为空:var obj=JsonConvert.DeserializeObject(response.Content);有什么想法吗?我做错了,在仔细查看您的代码后,我移动了一些东西,它工作得很好。谢谢!字典缺少属性名,所以我添加了“items”。我还实现了它,现在执行以下操作后,响应中的“项”为空:var obj=JsonConvert.DeserializeObject(response.Content);有什么想法吗?我做错了,在仔细查看您的代码后,我移动了一些内容,它工作得很好。谢谢!