Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.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
C# 如何反序列化key name.Net中包含点(.)的Json字符串_C#_Json_.net Core - Fatal编程技术网

C# 如何反序列化key name.Net中包含点(.)的Json字符串

C# 如何反序列化key name.Net中包含点(.)的Json字符串,c#,json,.net-core,C#,Json,.net Core,这是我的Json字符串的一个例子,我不能更改它的键名,有什么建议吗?提前感谢。根据用于反序列化的库,您可以使用相应的属性标记模型字段-例如System.Text.Json或Newtonsoft.Json Newtonsoft.Json: { "odata.metadata": "sometext", "odata.nextLink": "sometext", "value&quo

这是我的Json字符串的一个例子,我不能更改它的键名,有什么建议吗?提前感谢。

根据用于反序列化的库,您可以使用相应的属性标记模型字段-例如
System.Text.Json
Newtonsoft.Json

Newtonsoft.Json

{
     "odata.metadata": "sometext",
     "odata.nextLink": "sometext",
    "value": [{
            "odata.type": "SP.Data.RegionsListItem",
            "odata.id": "07404daa-61b5-4947-af9f-38f29822f775",
            "odata.etag": "\"3\"",
            "odata.editLink": "Web/Lists(guid'65dc896b-df87-4145-98d9-57c7ea619e66')/Items(3)",
            "FileSystemObjectType": 0,
            "Id": 3,
            "ServerRedirectedEmbedUri": null,
             }]
    
}
public class Root
{
    [JsonProperty("odata.metadata")]
    public string OdataMetadata { get; set; }

    [JsonProperty("odata.nextLink")]
    public string OdataNextLink { get; set; }

    [JsonProperty("value")]
    public List<Value> Value { get; set; } // do the same for Value type
}

 var result = JsonConvert.DeserializeObject<Root>(json);

为数据创建类时,可以为类成员使用注释。例如,当使用Newtonsoft.Json时,它的工作方式如下:

public class Root
{
    [JsonPropertyName("odata.metadata")]
    public string OdataMetadata { get; set; }

    [JsonPropertyName("odata.nextLink")]
    public string OdataNextLink { get; set; }

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


var result = JsonSerializer.Deserialize<Root>(json);
对于其他库,注释的命名可能不同。另外,请确保导入了正确的命名空间,并为正在使用的库使用了正确的注释。例如,当使用Newtonsoft.Json反序列化时,System.Text.Json.JsonPropertyName注释不会产生任何效果,反之亦然

然后可以反序列化

class MyData {

[JsonProperty("odata.metadata")]
public string Metadata {get;set;}

[JsonProperty("odata.nextlink")]
public string NextLink {get;set;}

... 
}


您使用哪个库进行反序列化?这是否回答了您的问题?还有,谢谢,成功了,谢谢worked@someone我很乐意帮忙!如果答案对您有效,请将其标记为已接受(答案左侧的勾选框)。或者是德皮尔谢尔的。
var data = JsonConvert.DeserializeObject<MyData>(thejsonstring);
 var metadata = data.Metadata;