У меня есть следующий JSON в моем приложении.Как преобразовать словарь pair.value в словарь в C#?
string json = @"{""dest"":[ { ""mode"": ""1"", ""test"":""test1,test,test2""},{ ""mode"": ""2"", ""test"": ""test3"" }]}";
Для того, чтобы получить значение Dest Я использую следующий метод.
var json_serializer = new JavaScriptSerializer();
Dictionary<string, object> dictionary = json_serializer.Deserialize<Dictionary<string, object>>(json);
public Dictionary<string, object> GetObject(Dictionary<string, object> view, string name)
{
Dictionary<string, object> result = new Dictionary<string, object>();
object value = null;
foreach (KeyValuePair<string, object> pair in view)
{
Type type = pair.Value.GetType();
if (pair.Key == name)
{
**Dictionary<string, object> child = (System.Collections.Generic.Dictionary<string, object>)pair.Value;**
result = GetObject(child, name);
if (result != null)
{
break;
}
}
else
{
}
}
return result;
}
Я получаю сообщение об ошибке в словаре ребенка линии = (System.Collections.Generic.Dictionary) pair.Value;. Ошибка говорит: «Невозможно передать объект типа« System.Collections.ArrayList »для ввода« System.Collections.Generic.Dictionary`2 [System.String, System.Object] ».
Кто-нибудь знает, как это исправить?
Casting не меняет тип объектов. См. ['Enumerable.ToDictionary'] (http://msdn.microsoft.com/en-us/library/bb549277.aspx) - вам нужно будет выбрать правила для выбора ключа/значения из каждого элемента в последовательности , – user2246674
Можете ли вы предоставить образец? – user1357872
Сначала начните с определения того, что находится в Key и Value или 'pair', и как эти значения должны быть преобразованы в ключи и значения в новый словарь. Из-за уродливой нетипизированной природы вам придется сначала наложить 'pair.Value' на' ArrayList'. например 'child = ((ArrayList) pair.Value) .ToDictionary (p =>/* селектор для ключа * /, p =>/* селектор для значения * /)'. – user2246674