2014-04-15 26 views
0

我寫代碼來獲取一個Web服務,如JSON在C#中返回outpot,當輸出被捕獲,我把它轉換爲動態數據類型,然後在我的代碼我寫的東西動態JSON回報「長」爲對象的屬性

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 

以上的最後一個語句,給出錯誤「長」是關鍵詞,並且不能被用作標識符。我的問題是怎樣讓這個值,如長作爲變量的名字我的JSON對象。

我嘗試使用myobj.property1[0].sub-property.GetProperty("long").GetValue()但它也不能正常工作,並給予錯誤。任何想法如何可以訪問該屬性。很難從源代碼中更改變量名稱。

感謝,

回答

1

假設你dynamic對象實際上是從Json.NET一個JObject,其中之一將工作:

long l1 = d["long"]; 
long l2 = d.GetValue("long"); 
long l3 = d.Value<long>("long"); 

編輯:或者,如Romoku建議,[email protected]。然而,我不得不感慨這一個,因爲@符號不是(據我所知)廣泛使用或在這方面的能力已知的,因此可能會混淆誰閱讀代碼的人。如果你有,我有一個更明確的查詢,通過串像上述三種去的選項。

+0

沒有,我沒有在這裏使用Json.Net。但「@」適合我。 –