2013-07-11 3 views
-2

У меня есть структура JSON, как показано ниже.Получение значений из объекта JSON в C#

{"name":"user1","param":{"showid":"test"}} 

Я передать значение структуры JSON в программу, где значение объекта JSON будет выборка вне. Но значения ключей будут отличаться для каждого объекта JSON. SO i не смог создать структуру объекта JSON для извлечения значений.

ie: В следующий раз объект JSON может быть как показано ниже.

{"name1":"user2","param1":{"showname":"test1"}} 

Как перевести пару ключевых значений из структуры JSON в C#?

+1

Развести его любой библиотекой json? Google болит? – wudzik

+0

Структура JSON будет создана в Javascript, а в другом конце мне нужно выполнить итерацию на C# без использования сторонних ссылок. –

+0

Без использования ссылки третьей стороны вам необходимо прочитать спецификации json и написать собственный парсер. Но я думаю, что это не лучшая идея, почему нельзя использовать третью сторону? – wudzik

ответ

4

Вы можете использовать System.Web.Script.Serialization.JavaScriptSerializer (System.Web.Extensions.dll) и загружать его в динамический тип данных, тогда вы можете получить доступ к таким свойствам, как словарь.

Или вы можете использовать отражение, чтобы найти доступные свойства/поля и получить значение поля/свойства.

public static Dictionary<string, object> ToPropertyDictionary(this object obj) 
{ 
    var dictionary = new Dictionary<string, object>(); 
    foreach (var propertyInfo in obj.GetType().GetProperties()) 
     if (propertyInfo.CanRead && propertyInfo.GetIndexParameters().Length == 0) 
      dictionary[propertyInfo.Name] = propertyInfo.GetValue(obj, null); 
    return dictionary; 
} 
+0

моя программа разработана в .net 3.5, где динамическое ключевое слово не поддерживается. Можете ли вы представить пример кода, который, как достичь этого, используя отражение? –

+0

public class JsonDeserializer { private IDictionary <строка, объект> jsonData {get; задавать; } public static Dictionary ToPropertyDictionary (этот объект obj) { 10 var dictionary = новый словарь (); foreach (var propertyInfo в obj.GetType(). GetProperties()) if (propertyInfo.CanRead && propertyInfo.GetIndexParameters(). Length == 0) dictionary [propertyInfo.Name] = propertyInfo.GetValue (obj, null) ; словарь возврата; } Можете ли вы понять, почему здесь возникает ошибка? –

+0

@ пользователь833985: obj == null? –

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