C# 如何反序列化key name.Net中包含点(.)的Json字符串
这是我的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
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;