Json GET请求从数组<>更改宾语

时间:2014-09-29 12:32:14

标签: c# json json.net

我想在REST API上执行JSON get请求 当我发布资源并在之后立即使用get时,我在响应中获得了一个JSON对象 当我在发布之后放置资源并使用get之后,然后JSON对象变为数组 以下是我得到的一些示例回复:

发帖后放:

{  
    "metadata":{  
      "entry":[  
         {  
            "@key":"x",
            "$":"y"
         },
         {  
            "@key":"x",
            "$":"y"
         }
      ]
    }
}

仅发帖后:

{
"metadata": {
        "entry": {
            "@key": "cachingEnabled",
            "$": "false"
        }
    },
}

我可以使用以下任一代码进行操作。

JSON数组:

public class MetaData
{
    [JsonProperty("entry")]       
    public List<EntryType> Entry { get; set; }
}

JSON对象:

public class MetaData
{
    [JsonProperty("entry")]       
    public EntryType Entry { get; set; }
}

如何将c#中的这个映射到一个属性?

1 个答案:

答案 0 :(得分:0)

您可以将其映射到dynamic类型,这样编译器可以在运行时推迟类型:

public class MetaData
{
    [JsonProperty("entry")]       
    public dynamic Entry { get; set; }
} 

这样,每次反序列化Entry时,它可能属于不同的类型。在反序列化JSON之后,您必须跟踪它的类型。