我们从Facebook Real Time订阅中收到JSON数据。 JSON本身包含“object”:“page”之类的属性,我们需要访问此属性。
{
"entry":[
{
"changes":[ ],
"id":"1037501376337008",
"time":1465883784
}
],"object":"page"
}
我们使用动态对象来解析JSON,但是当我们尝试访问result.object时,不允许使用它,因为object是C#中的关键字。
dynamic result = JsonConvert.DeserializeObject<dynamic>(jsonRealTimeNotification);
string objectType = result.object.ToString(); // This line does not build
我们可以用原始JSON字符串中的某些文本替换“对象”然后解析,但我们正在寻找是否有一种标准的方法来处理这个
答案 0 :(得分:1)
使用@object
:
dynamic result = JsonConvert.DeserializeObject<dynamic>(jsonRealTimeNotification);
string objectType = result.@object.ToString();
这与指定常规逐字标识符时使用的语法相同。来自C# Language Specification, § 2.4.2 Identifiers (C#):
前缀“@”允许使用关键字作为标识符,这在与其他编程语言交互时很有用。字符@实际上不是标识符的一部分,因此标识符可能在其他语言中看作普通标识符,没有前缀。带有@前缀的标识符称为逐字标识符。
示例fiddle。