Я пытаюсь разобрать JSON на Windows Phone с DataContractJsonSerializer
. Все ответы JSON имеют одинаковый формат: статус, сообщение, данные. Поле состояния и сообщения всегда имеет один и тот же тип, но поле данных содержит объект, специфичный для вызова. Вот некоторые примеры:Извлечь внутренний объект JSON для отдельного разбора
Hash
{
status: 0,
message: "No error",
data:
{
team: "test",
startTime: "1969-12-31 19:00:00 -0500",
endTime: "2000-01-01 00:00:00 -0500",
max_photos: 30,
max_judged_photos: 24
}
}
Список
{
status: 0,
message: "No error",
data:
[
{
id: 1,
game_id: "Test",
description: "Test",
points: 100
},
{
id: 2,
game_id: "Test",
description: "Test",
points: 1000
}
]
}
Я хотел бы разобрать ответов в общий Response
объект, содержащий статус, сообщение и данные. Затем я хочу проанализировать JSON в данных в правильный объект (хэш или список). Вот что мой Response
класс в настоящее время выглядит следующим образом:
[DataContract]
public class Response
{
[DataMember(Name = "status", IsRequired=true)]
public STATUS Status { get; set; }
[DataMember(Name = "message", IsRequired = true)]
public string Message { get; set; }
[DataMember(Name = "data", IsRequired = true)]
public ?????? Data { get; set; }
}
Мой вопрос, есть ли общий JSON контейнер можно использовать для удержания внутреннего JSON в поле данных (так что я могу разобрать, что отдельно) или есть лучший способ решить это вообще? Я бы предпочел не иметь отдельных классов Response
для каждого типа ответа.
спасибо.
JSON.NET была одобрена Microsoft, так что это безопасно альтернатива родному JSON Serializer –
после того, как он был загружен как объект JObject, можно ли его перевести в соответствующий класс? –