Как можно десериализовать с помощью Javascript Serializer? (ASP.net) - PullRequest
0 голосов
/ 15 февраля 2011
public class SocialFriends
    {
        public string id { get; set; }
        public string name { get; set; }
    }

это мой класс.

List<SocialFriends> oList2 = ser.Deserialize<List<SocialFriends>>(response.Content);

Я получаю данные вот так.Но он возвращает 0 данных: S

Данные здесь

{"data":[{"name":"George","id":"511222445"},{"name":"Mayk","id":"517247768"}]}

Я не могу объяснить эту проблему?Кто-нибудь может сказать, где моя вина?

Ответы [ 3 ]

1 голос
/ 15 февраля 2011

Создать класс

class Data 
{
    public SocialFriends[] data { get; set; }
}

и измените свой код на:

Data oList2 = ser.Deserialize<Data>(response.Content);
1 голос
/ 15 февраля 2011

Этот код работает.

public class SocialFriendsData
{
    public List<SocialFriends> Data { get; set; }
}

public class SocialFriends
{
    public string id { get; set; }
    public string name { get; set; }
}

Десериализация:

 JavaScriptSerializer ser = new JavaScriptSerializer();
 string response = "{\"data\":[{\"name\":\"George\",\"id\":\"511222445\"},{\"name\":\"Mayk\",\"id\":\"517247768\"}]}";
 SocialFriendsData oList2 = ser.Deserialize<SocialFriendsData>(response);
0 голосов
/ 15 февраля 2011

Ваш JSON заключен в свойство data.Вы должны будете извлечь строку JSON из этого свойства data.Я не знаю, какой сериализатор JSON вы используете, но, исходя из того, что вы предоставили, возможно, самый простой способ - просто создать промежуточный класс DataHolder:

public class DataHolder
{
    public string Data { get; set; }
}

Затем десериализовать его следующим образом:

var dataHolder = ser.Deserialize<DataHolder>(response.Content);
var oList2 = ser.Deserialize<List<SocialFriends>>(dataHolder.Data);

Если вы используете надежный сериализатор JSON, такой как Json.NET, вы можете даже пропустить промежуточную десериализацию и изменить тип DataHolder на правильный тип:

public class DataHolder
{
    public List<SocialFriends> SocialFriends { get; set; }
}

И затем использоватьэтот код для получения данных:

var dataHolder = ser.Deserialize<DataHolder>(response.Content);
var oList2 = dataHolder.SocialFriends;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...