c# - 要反序列化的对象具有 C# 关键字

标签 c# json object serialization keyword

按原样定义 JSON,为了将其反序列化为对象,我需要在我的类上创建一个名为“事件”的属性,这是一个 C# 关键字。有没有其他方法可以告诉它字段名称是什么?

这是一个 JSON 示例:

{ event: 123 data: {"data":"0D0401","ttl":"60","published_at":"2014-04-16T18:04:42.446Z","id":"48ff6f065067555031192387"} }

以下是我的类,由于关键字而无法编译:

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# 中转义所涉及的怪癖:

  • 字 rune 字转义:

e.g. '\'', '\n', '\u20AC' (the Euro € currency sign), '\x9'

(相当于\t)) - 文字字符串转义:

e.g. "...\t...\u0040...\U000000041...\x9..."

  • 逐字字符串转义:

e.g. @"...""..."

  • string.Format 转义:

e.g. "...{{...}}..."

  • 关键字转义:

e.g. @if (for if as identifier)

  • 标识符转义:

e.g. i\u0064 (for id)

关于c# - 要反序列化的对象具有 C# 关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23116995/

相关文章:

c# - 通过创建更多文件写入文件(而不是替换/覆盖)

c# - 如何突出显示 C# 中的特定单词?

c# - 如何使用 Lazy<StackFrame> 创建可预测的输出

php - 将数据循环成json?

javascript - 强制带有变量的对象属性重新计算值

javascript - JavaScript中如何检查一个JS对象的所有键和值是否存在于另一个JS对象中?

c# - 使用 MS bot 框架获取用户团队列表

json - 找不到使用 Json 的类的序列化程序

javascript - 类型错误 : Converting circular structure to JSON - find error in json

python - 如何将文件结构表示为 python 对象