2014-10-09 2 views
-1

Это моя JSON строка:десериализации JSON в C# возвращает нулевое значение

"{\"1\":{\"Name\":\"macintosh\",\"ShortDescription\":\"red\",\"LongDescription\":\"dfhdfh\"},\"2\":{\"Name\":\"macintosh\",\"ShortDescription\":\"red\",\"LongDescription\":\"dfhdfh\"},\"7\":{\"Name\":\"macintosh\",\"ShortDescription\":\"red\",\"LongDescription\":\"dfhdfh\"},\"8\":{\"Name\":\"macintosh\",\"ShortDescription\":\"red\",\"LongDescription\":\"dfhdfh\"},\"9\":{\"Name\":\"macintosh\",\"ShortDescription\":\"red\",\"LongDescription\":\"dfhdfh\"},\"10\":{\"Name\":\"macintosh\",\"ShortDescription\":\"red\",\"LongDescription\":\"dfhdfh\"}}" 

Это объект JSON:

{ 
    "1": { 
     "Name": "macintosh", 
     "ShortDescription": "red", 
     "LongDescription": "dfhdfh" 
    }, 
    "2": { 
     "Name": "macintosh", 
     "ShortDescription": "red", 
     "LongDescription": "dfhdfh" 
    }, 
    "7": { 
     "Name": "macintosh", 
     "ShortDescription": "red", 
     "LongDescription": "dfhdfh" 
    }, 
    "8": { 
     "Name": "macintosh", 
     "ShortDescription": "red", 
     "LongDescription": "dfhdfh" 
    }, 
    "9": { 
     "Name": "macintosh", 
     "ShortDescription": "red", 
     "LongDescription": "dfhdfh" 
    }, 
    "10": { 
     "Name": "macintosh", 
     "ShortDescription": "red", 
     "LongDescription": "dfhdfh" 
    } 
} 

А вот мои классы:

public class MyModel 
{ 
    public string Name { get; set; } 

    public string ShortDescription { get; set; } 

    public string LongDescription { get; set; } 
} 

public class Friends 
{ 
    public Dictionary<int, MyModel> data { get; set; } 
} 

Вот как Я пытаюсь десериализировать его:

Friends facebookFriends = new JavaScriptSerializer().Deserialize<Friends>(theJsonString); 

, но затем facebookFriends.data дает мне null значение. Что я делаю не так?

ответ

1

Try:

var friends = new JavaScriptSerializer().Deserialize<Dictionary<string, MyModel>>(theJsonString); 
0

Есть несколько вопросов. Deserialiser ожидает увидеть объект data, которого у вас нет в строке JSON. Кроме того, «ключи» у вас есть строки, а не целые числа. Так что вы хотите что-то вроде этого:

Friends facebookFriends = new Friends(); 
facebookFriends.data = new JavaScriptSerializer().Deserialize<Dictionary<string, MyModel>>(theJsonString); 

Вы также должны обновить модель курса:

public class Friends 
{ 
    public Dictionary<string, MyModel> data { get; set; } 
} 
Смежные вопросы