2013-11-07 4 views
0

Я преобразовал XML в JSON:Как я могу получить доступ к этому полю json?

var json = JsonConvert.SerializeXmlNode(doc); 

Это результат:

"author": { 
     "name": "Hey Guappo", 
     "yt:userId": "asfajgf346346fghsdgsWfiqcfr1pfQ" 
    } 

, и я хотел бы получить доступ к yt:userId.

Я не могу сделать это в .NET:

dynamic objectParsed = JObject.Parse(json); 
var userID= (string)objectParsed.entry.author.yt:userId; 

из :. Итак, как я могу управлять пространством имен в JSON? У меня есть:

var yt = XNamespace.Get("http://gdata.youtube.com/schemas/2007"); 

, но я не знаю, как применить его ...

ответ

3

Попробуйте это:

JObject json = JObject.Parse(json); 
string userId = json["author"]["yt:userId"].ToString(); 
+0

Нет никакой возможности с динамической версией? – markzzz

+0

Я не уверен, я сам не использую динамическое ключевое слово. Вы можете попробовать тот же код, но используя динамический вместо JObject, возможно, он будет работать одинаково. – Tobberoth

0

Это будет работать с динамическим просто отлично. Вам не нужно использовать JObject. Кроме того, я подчеркнул тот факт, что вы можете использовать. обозначение UP TO your yt: userId, после чего вам нужно индексировать по строковому значению.

dynamic objectParsed = JObject.Parse(json); 
string userId = json.author["yt:userId"].ToString(); 

Там действительно нет причин не использовать JObject как Tobberoth указал, но нет также никаких технических ограничений на использование динамичной, если вы предпочитаете.

В качестве примечания стороны избегайте использования явного приведения в строку с помощью (строки). Всегда используйте ToString().

Смежные вопросы