动态json返回";“长”;作为对象属性
本文关键字:属性 对象 json 返回 quot 动态 | 更新日期: 2023-09-27 17:58:32
我编写了一段代码来获取一个Web服务,该服务在C#中以JSON形式返回outlet,当捕获输出时,我将其转换为动态数据类型,然后在代码中编写一些
dynamic myobj = FetchFromWeb("some weburl");
string value1 = myobj.property1[0].sub-property.finalvaluething; //This works
string value2 = myobj.property1[0].sub-property.long; //This produce error that long is keyword
上面的最后一条语句给出了一个错误,即"long"是关键字,不能用作标识符。我的问题是如何获得该值,因为在我的Json对象中,long被用作变量的名称。
我尝试使用myobj.property1[0].sub-property.GetProperty("long").GetValue()
,但它也不起作用,并给出错误。知道我怎么才能进入那处房产吗。很难从源代码中更改变量名。
谢谢,
您可以使用@
符号来转义关键字。
dynamic data = JObject.Parse("{'long':'value'}");
string longValue = data.@long;
Console.WriteLine(longValue); // value
请参阅如何使用C#关键字作为属性名称?
假设您的dynamic
对象实际上是Json的JObject
。NET,其中一个会起作用:
long l1 = d["long"];
long l2 = d.GetValue("long");
long l3 = d.Value<long>("long");
编辑:或者,正如Romoku所建议的,d.@long
。然而,我对此有着复杂的感受,因为@
符号并没有被广泛使用或以这种身份为人所知,因此可能会让阅读代码的人感到困惑。如果你可以选择,我会使用更明确的字符串查找,就像上面三个一样。