为JSON构造C#对象

use*_*134 5 c# json json-deserialization

我正在尝试在我的应用程序中为JSON响应创建一个C#对象.我有如下的JSON

 {
"@odata.context": "https://example.com/odata/$metadata#REQ",
"value": [
    {
        "Id": 17,
        "Name": "Req"
    }
  ]
 }
Run Code Online (Sandbox Code Playgroud)

我不知道如何创建C#对象 @odata.context

public class RootObject
    {
        public string @odata.context { get; set; }
        public List<Value> value { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

它会在@ odata.context中抛出错误

Equ*_*lsk 6

那是因为C#中的标识符不能有@符号.你还没有说明你正在使用什么库,但如果它是JSON.NET,那么你可以简单地装饰属性.

public class Root
{
    [JsonProperty("@odata.context")]
    public string OdataContext { get; set; }

    [JsonProperty("value")]
    public List<Value> Value { get; set; }
}

public class Value
{
    [JsonProperty("Id")]
    public long Id { get; set; }

    [JsonProperty("Name")]
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

  • JSON.NET不区分大小写.你可以删除所有`JsonProperty`并只保留`[JsonProperty("@ odata.context")]` (3认同)