オブジェクトに逆シリアル化しようとしているHttpRequestから返されているJSON文字列があります。 jsonには、私の場合は不要なルート要素があります(同じデータを使用する他のアプリケーションでは、必要なので、削除できません)。私はこれを行うにはいくつかの異なる方法を試しましたが、私のオブジェクトは常にnullです。ウォッチウィンドウでjsonがリクエストから正しく返されていることがわかります。私は何が欠けているかについての任意のアイデア?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に基づいています。私は辞書オブジェクトにシリアル化し、そこから自分の値を取得することができますが、これは1つのノード(x_banner)を含むjson文字列のオーバーヘッドが多いようです 私たちは他のすべてのjson私はそれを再利用できるようにしたいと思います。今のところ、私は立ち往生していないので、新しい方法を作成して辞書にデシリアライズしました。 – Rhonda