1

我正在调用一个返回带有动态属性名称的 json 数据的 API,我正在尝试构建一个可以反序列化此响应的类,但是这个属性名称让我很头疼。

"data": {
  "1": {
    "Item": {
      "id": "1",
      "name": "Item 1"
    }
  },
  "2": {
    "Item": {
      "id": "2",
      "name": "Item 2"
    }
  },
  "3": {
    "Item": {
      "id": "3",
      "name": "Item 3"

处理这种情况的最佳方法是什么?我正在尝试提出一个可用于删除外部节点的正则表达式,但尚未成功。

有什么帮助吗?

4

2 回答 2

2

如果“1”和“2”是动态属性名称,那么仅将“数据”放入字典而不是尝试使用 RegEx 操作响应呢?之后您可以简单地通过字典进行枚举。

public class Response
{
    [JsonProperty("data")]
    public Dictionary<string, ItemContainer> { get; set; }
}

public class ItemContainer
{
    [JsonProperty("Item")]
    public Item Item { get; set; }
}
于 2013-10-24T20:41:57.077 回答
-1

这应该剥离它。它找到 { 的第一次出现并从那里开始,因此结果字符串将是 {......} 而不是 "varname": {......}

myjson = jsonstring.Substring (jsonstring.IndexOf('{'));
于 2013-10-24T19:12:25.680 回答