Десериализация JSON в Windows Phone 7 с помощью Json.NET - PullRequest
1 голос
/ 09 марта 2011

Я знаю, что есть бесчисленное множество вопросов по этому поводу. Я прочитал многие из них, но мало понимания. Можете ли вы помочь прояснить процесс десериализации JSON в WP7?

У меня есть JSON, который выглядит так:

{ 
    "status" : {
        "code" : 99 ,
        "message" : "Already checked in" 
    },

    "response" : {
        "token" : "faisdufhdaisuflasdkf",
        "distance" : 20,
        "angle" : 45
    }   
}

Я пытаюсь использовать Json.NET, но здесь мое понимание почти ничего не значит.

 var deserializedJSON = JsonConvert.DeserializeObject<Dictionary<string, <TYPE> >>(JsonString);

Для <TYPE>, как мне лучше всего определить ожидаемый десериализованный объект? Статус и ответ как отдельные классы? Или только один универсальный полностью инкапсулирующий класс ServerResponse?

Кроме того, откуда мне знать, что этот сериализатор назначит правильный вывод для правильных переменных члена класса? если у меня есть

class Status {
    string code;
    string message;
}

Откуда я знаю, что они будут назначены правильно?

Спасибо. Извиняюсь, если это кажется тривиальным. Это мой самый первый проект на C #, Silverlight, Windows Phone 7 и / или .NET

Ответы [ 2 ]

3 голосов
/ 09 марта 2011
{ 
    "status" : {
        "code" : 99 ,
        "message" : "Already checked in" 
    },

    "response" : {
        "token" : "faisdufhdaisuflasdkf",
        "distance" : 20,
        "angle" : 45
    }   
}

переводится в

public class item {
    public status status { get; set; }
    public response response { get; set; }
}
public class status {
    public int code { get; set; }
    public string message { get; set; }
}
public class response {
    public string token { get; set; }
    public int distance { get; set; }
    public int angle { get; set; }
}

, но в этом случае элемент является анонимным (который все еще действует)

, а затем используйте его следующим образом:

var deserializedJSON = JsonConvert.DeserializeObject<item>(JsonString);
1 голос
/ 09 марта 2011

У вас есть оболочка для ответа о состоянии и состоянии, поэтому вам нужно, чтобы этот класс оболочки был каким-то образом представлен, если вы хотите выбрать легкий путь.Если вы не хотите автоматически десериализовать, вы можете взять под контроль и избежать оболочки, но я не понимаю, почему это было бы лучшим вариантом для того, что вы пытаетесь сделать.Другими словами, я подтверждаю ответ Драхенштерна, за который я также проголосовал.: -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...