我正在使用Json動態對象。C#Json動態對象
下面是我用來獲取數據出來的對象是什麼:
string = obj.item.today.price;
這工作得很好,但問題是,一旦我開始使用數字例如:
string = obj.daily.10000;
它給我一個錯誤
有什麼辦法解決這個問題嗎?
我正在使用Json動態對象。C#Json動態對象
下面是我用來獲取數據出來的對象是什麼:
string = obj.item.today.price;
這工作得很好,但問題是,一旦我開始使用數字例如:
string = obj.daily.10000;
它給我一個錯誤
有什麼辦法解決這個問題嗎?
這是不可能的,因爲10000
不是有效的identifier「call
10000 on daily object
」。
讓我解釋一下是怎麼回事:
JSON
解析器產生一些運行時類型,從一些基本的JSON
類型繼承(例如JsonObject
)。 所以,obj
是一些生成類型,你調用屬性item
就可以了,它返回類似的生成類型,然後你調用today
屬性等等。
最後一步很奇怪,不能有10000
任何類型的屬性,生成或不生成。
但是,如果庫支持鍵值訪問對象,你可以嘗試寫
obj.daily["10000"]
或投obj轉換爲JObject(假設你正在使用JSON.NET) 並調用Property方法:
var jsonObject = (JObject) obj;
var propertyValue = jsonObject.Property("10000").Value;
是的,我嘗試obj.daily [「10000」],仍然給我標識符錯誤。 但是,如果所有名稱都是數字,那麼如何反序列化json代碼呢? – Tom 2013-04-23 09:20:54
@Tom庫可以在反序列化的對象內維護內部字典並在那裏保存屬性。 – 2013-04-23 09:27:03
如果您在使用Json.NET
string json = "{ dayly : { 1000 : 'asd' } }";
dynamic d = JsonConvert.DeserializeObject(json);
Console.WriteLine((d.dayly as JObject).Property("1000").Value);
請問您可以把代碼 – 2013-04-23 09:08:03
命名爲一個變量:'var 1000 ='ABC';'??? – 2013-04-23 09:11:39
JSON庫支持像obj.daily [「10000」]'這樣的索引語法並不罕見。你嘗試過嗎? – AlexanderBrevig 2013-04-23 09:14:21