Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法将具有动态名称的json响应反序列化到C#类中?_C#_Regex_Json_Deserialization - Fatal编程技术网

有没有办法将具有动态名称的json响应反序列化到C#类中?

有没有办法将具有动态名称的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": {

我调用了一个API,它返回带有动态属性名的json数据,我试图构建一个类,我可以将这个响应反序列化到其中,但是这个属性名让我很头疼

"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);有什么想法吗?我做错了,在仔细查看您的代码后,我移动了一些内容,它工作得很好。谢谢!