[英]object to deserialize has a C# keyword
将 JSON 原样定义后,为了将其反序列化为一个对象,我需要在我的类上创建一个名为“event”的属性,这是一个 C# 关键字。 有没有另一种方法可以告诉它字段名称是什么?
下面是一个 JSON 示例:
{ event: 123 data: {"data":"0D0401","ttl":"60","published_at":"2014-04-16T18:04:42.446Z","id":"48ff6f06506755503119 }2387"
以下是由于关键字而无法编译的类:
public class Event
{
public int event { get; set; }
public EventDetail data { get; set; }
}
public class EventDetail
{
public string data { get; set; }
public string ttl { get; set; }
public DateTime published_at { get; set; }
public string id { get; set; }
}
改变
public class Event
{
public int event { get; set; }
public EventDetail data { get; set; }
}
对此
public class Event
{
public int @event { get; set; }
public EventDetail data { get; set; }
}
这个技巧展示了在 C# 中与转义相关的怪癖:
例如 '\\''、'\\n'、'\€'(欧元 € 货币符号)、'\\x9'
(相当于 \\t)) -文字字符串转义:
例如“...\\t...\@...\\U000000041...\\x9...”
例如@"...""..."
例如“...{{...}}...”
例如@if(如果作为标识符)
例如 i\d(用于 ID)
尝试在相关属性上使用[DataContract(Name = "@event")]
属性。 然后它将正确(反)序列化,您可以重命名该属性以便编译。
我能够大写“e”,它仍然有效。 看起来解析机制不区分大小写。
无论如何,有人会重新审视这个......在 DotNet 3.1 中using System.Text.Json.Serialization
使用该属性
[JsonPropertyName("TheNameItHasInJsonFile")]
public int Something {get;set;}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.