Мне удалось создать десериализацию, создав класс контрактных данных (после того, как он наложил на клиента метрическую тонну). Моя проблема в том, что оба поля, которые я объявил, возвращают пустой материал. Итак, я посмотрел на него и понял, что объект JSON вложен, и я не понимаю, как получить доступ к частям, которые находятся внутри.Как десериализовать вложенный объект?
контракт Данные, как это, но я получаю Боппа в нуль (или пустая строка, не уверен, какой) и Mopp как кучу нулей.
[DataContract]
public class Customer
{
[DataMember(Name = "Beep")]
public String Bopp;
[DataMember(Name = "Meep")]
public Guid Mopp;
}
Я думал, что данные были в этой форме.
Однако, по-видимому, они переместили объект внутри Иным, так что это больше похоже на это.
[ "root":[
{
"A":"some",
"B":[
{"Beep":"beep1", "Meep":"meep1"},
{"Beep":"beep2", "Meep":"meep2"},
{"Beep":"beep3", "Meep":"meep3"}],
"C":"some"
},
{
"A":"some",
"B":[
{"Beep":"beep1", "Meep":"meep1"},
{"Beep":"beep2", "Meep":"meep2"},
{"Beep":"beep3", "Meep":"meep3"}],
"C":"some"
}
]]
Как я могу переконфигурировать контракт с данными, чтобы получить доступ к правильным полям? Или мне что-то не хватает, и имя элемента данных не должно отличаться от поля (т. Е. Beep и Bopp не будет работать) ?!
EDIT:
В соответствии с просьбой, я отправляю (почти) живут данные из строки.
{"CustomerStatuses":[{
"Information":[{"Guid":"1","Role":"Customer"}],
"CustomerId":"12345678-1234-1324-1234-123456781234",
"Status":4},
"Information":[{"Guid":"5","Role":"Customer"}],
"CustomerId":"12345678-1234-1324-1234-123456781234",
"Status":6},
"Information":[{"Guid":"7","Role":"Seller"}],
"CustomerId":"12345678-1234-1324-1234-123456781234",
"Status":6},
...
И вот фактический договор с данными.
[DataContract]
public class Customer
{
[DataMember(Name = "Status")]
public String Status;
[DataMember(Name = "CustomerId")]
public Guid Guid;
}
К сожалению - я имел в виду, чтобы сделать его короче и более общий характер. Возможно, ошибка. Вы говорите, что мои свойства в классе ** должны совпадать с именами из строки JSON ?! Не могу я их каким-то образом сопоставить (я думал, что «DataMember» был для этой цели). Кроме того, вы говорите, что у меня ** есть **, чтобы настроить структуру нескольких классов для чтения строки JSON? Я надеялся как-то подключиться к структуре и прочитать ее часть. – 2013-02-08 17:54:19
Я подготовил и разместил обновление, показывающее фактическую структуру строки JSON. Надеюсь, эта помощь поможет мне. :) – 2013-02-08 18:03:39
Вы можете попробовать библиотеку Json.NET вместо сериализаторов контрактов. Это должно позволить вам десериализовать без структуры класса. –