plz help, я застрял. У меня есть службы WCF, которая возвращает что-то вроде этого:Попытка десериализации JSON с использованием JSON.NET и DataContractJsonSerializer не работает
{
"GetDataRESTResult":
[
{"Key1":100.0000,"Key2":1,"Key3":"Min"},
{"Key1":100.0000,"Key2":2,"Key3":"Max"}
]
}
, и я хотел бы десериализации, но все, что я использую (JSON.NET или DataContractJsonSerializer) Я получаю сообщение об ошибке. При использовании DataContractJsonSerializer я использую код TheIs:
byte[] data = Encoding.UTF8.GetBytes(e.Result);
MemoryStream memStream = new MemoryStream(data);
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(List<DataDC>));
List<DataDC> pricinglist = (List<DataDC>)serializer.ReadObject(memStream);
где DataDC является контракт данных, который я получил от ссылки на службу службы WCF REST Я получаю JSON данные, и ошибка Я получаю InvalidCastException ...
Попытка использования JSON.NET Я получаю еще одно исключение, но все же ничего не могу понять, может ли кто-нибудь помочь, пожалуйста?
EDIT Вот JSON.NET StackTrace:
Не может десериализации текущего объекта JSON (например, { "имя": "значение"}) в тип «System.Collections.Generic.List` 1 [MyApp.MyServiceReference.DataDC] ' , потому что для этого требуется массив JSON (например, [1,2,3]) для десериализации . Чтобы исправить эту ошибку, либо измените JSON на массив JSON (например, [1,2,3]), либо измените десериализованный тип, чтобы он был обычным типом .NET (например, не примитивным типом типа, а не набором типа типа или списка), который можно десериализовать из объекта JSON . JsonObjectAttribute также можно добавить к типу, чтобы заставить его десериализоваться из объекта JSON. Путь 'GetDataRESTResult', строка 1, позиция 23.
Мэгги, спасибо кучу за ваш ответ, к сожалению, я не был в состоянии изменить DataDC, как это авто сгенерированный и полученный из метода службы WCF REST с именем GetDataREST(), который не был настроен на отправку JSON в голом формате, и именно поэтому он добавляет, что ключ GetDataRESTResult json ... ваш ответ очень полезен, и именно поэтому я его проголосовал но я хочу по-прежнему использовать DC ссылки на службу, вместо того чтобы писать свой собственный каждый раз, когда он может меняться ... вот почему я пошел на второй ответ, в котором я, надеюсь, получаю D ataDC применяется к jObj ["GetDataRESTResult"] объекту легко – dada