0
我有一個從HttpRequest返回的json字符串,我試圖反序列化到一個對象。 json的根元素在我的情況下是不需要的(其他應用程序使用相同的數據,因此無法刪除)。我嘗試了幾種不同的方式來做到這一點,但我的對象始終爲空。我可以在監視窗口中看到json正在從請求中正確返回。任何想法,我缺少什麼?Json.net - 反序列化JSON - 指定根元素?
我的代碼如下。
這是我想要反序列化的對象。
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
名稱將改變。它基於對象的id。我可以序列化成一個字典對象,並從那裏獲取我的值,但這似乎是一個只會包含一個節點的json字符串的很大開銷(x_banner) 我們有一個通用的方法,我們用於所有其他json所以我希望能夠重用它。現在,就這樣我沒有被卡住,我創建了一個新的方法並反序列化爲一個字典。 – Rhonda