У меня есть строка json, возвращаемая из HttpRequest, которую я пытаюсь десериализовать для объекта. У json есть корневой элемент, который не нужен в моем случае (другие приложения, которые используют одни и те же данные, нуждаются в нем, поэтому его нельзя удалить). Я пробовал несколько разных способов сделать это, но мой объект всегда равен нулю. Я вижу в окне часов, что json возвращается из запроса правильно. Любые идеи относительно того, чего я не хватает?Json.net - десериализация JSON -ignoring корневого элемента?
Мой код ниже.
Вот мой объект, к которому я пытаюсь десериализовать.
public class BrandHeaderResponse
{
public BrandHeaderData brandHeaderData { get; set; }
}
public class BrandHeaderData
{
public dynamic Image { get; set; } //url and alt text
public string BackgroundColor { get; set; }
public string LiveText { get; set; }
}
Вот код
HttpResponseMessage response;
using (var request = new HttpRequestMessage(HttpMethod.Get, new Uri(url)))
{
response = await webClient.SendAsync(request, requestHeaders);
}
using (var stream = await response.Content.ReadAsStreamAsync())
{
using (var sr = new StreamReader(stream))
{
using (var reader = new JsonTextReader(sr))
{
var serializer = new JsonSerializer();
var data = serializer.Deserialize<T>(reader);
return data;
}
}
}
И, наконец, вот JSON.
{
"2000_banner":{
"ComponentName":"2000_banner",
"SchemaName":"Brand Banner",
"BrandName":"Rockport - Dummy Banner",
"LogoTextColor":"Dark",
"Image":{
"ImageUrl":"http://n.media.com/staging/24?w=153&h=64",
"AltText":"Burberry"
},
"LiveText":"This is dummy brand text for Rockport.",
"BackgroundColor":"E3D9CE"
}
}
Будет ли свойство корневого объекта, которое вы хотите десериализовать, всегда иметь имя '2000_banner? 'Или может быть изменено имя свойства? 2) Могут ли быть другие свойства в корневом объекте? – dbc
Название изменится. Он основан на идентификаторе объекта. Я могу сериализовать в объект словаря и получать оттуда мои значения, но это кажется большим количеством накладных расходов для строки json, которая будет содержать только один узел (x_banner) У нас есть общий метод, который мы используем для всех наших других json поэтому я хотел бы иметь возможность повторно использовать его. Пока что я не застрял, я создал новый метод и десериализован в словаре. – Rhonda