У меня есть словарь, который создается, когда я десериализую объект JSON на основе класса.Получение списка из значения словаря
Например, мой класс выглядит так
public MyClass
{
public string someString {get;set;}
public double someDouble {get;set;}
public bool someBool {get;set;}
public List<string> valList {get;set;}
public List<string> valList2 {get;set;}
}
Когда объект JSON считывается при помощи Json.NET и deserialised, я в конечном итоге с моим словарем после немного обработки.
Я могу получить строку non-List <> значения достаточно легко, но не могу получить списки.
Я попытался
var fi = new List<string>(){};
fi = myDict["myKey"] as List<string>;
и
fi = myDict["myKey"]
но ни компилирует
Есть ли способ, чтобы извлечь мои списки из словаря?
десериализация делается просто, как этот
public static T DeserialiseEventData<T>(this T obj, string serialisedData)
{
try
{
return (T)JsonConvert.DeserializeObject(serialisedData, typeof(T));
}
catch
{
return default(T);
}
}
Для словаря, я сначала создать ключи (строки), используя метод 1, который затем вызывает следующий метод с использованием vals = GetValuesFromClass(cts);
private static List<string> GetValuesFromClass<T>(T obj)
{
var rv = new List<string>();
if (obj == null)
return rv;
var type = obj.GetType();
var t = type.GetProperties();
if (t.Length > 0)
{
for (var i = 0; i < t.Length; ++i)
{
if (t[i].ToString().Contains("List"))
{
var lstProperty = t[i].Name;
var res = obj.GetType().GetProperty(lstProperty).GetValue(obj, null) as List<string>;
Console.WriteLine(lstProperty);
if (res != null)
{
if (res.Count == 0)
rv.AddRange(new List<string>(){ string.Empty });
else
rv.AddRange(res);
}
else
{
rv.AddRange(new List<string>(){ string.Empty });
}
}
else
{
var test = t[i].GetValue(obj, null);
if (test == null)
rv.Add(string.Empty);
else
rv.Add(test.ToString());
}
}
}
return rv;
}
О возвращении , Я тогда делаю это
for (var i = 0; i < translate.Count; ++i)
rvDict.Add(keys, vals[i]);
вы можете добавить образец ввода JSon (небольшой фрагмент) и метод конечных точек seralizes его в этом классе? – Prescott
Поскольку вы не указали ни слова json, ни словаря, никто не может ответить на этот вопрос. Вы также не сообщили нам, что такое ошибка компиляции. –
, если у вас есть 'словарь <строка, строка>', объявленный, например, вы можете просто преобразовать объект словаря в список 'var fi = YourDictionary.Keys.ToList();' –
MethodMan