私はjsonで作業するのが初めてです - 私は既存のjsonデータ構造を使って作業していますが、データを出力しようとしていますが、既存のデータ構造の一部が私を困惑させています。c#Deserialize入れ子json
次は私のJSONデータである:私は困惑している
{"supplier":
{
"supplierid":3590,
"code":"ENCLES",
"name":"Les Miserables",
"analyses":[],
"amenities":[],
"info":
"{\"Supplier\":
{
\"Name\":\"Les Miserables\",
\"LastUpdate\":\"2011-11-01T22:16:06Z\",
\"Address3\":\"London\",
\"Address2\":\"51 Shaftesbury Avenue\",
\"PostCode\":\"W1D 6BA\",
\"Address1\":\"Queen's Theatre\",
\"Address4\":\"\",
\"Address5\":\"\",
\"SupplierId\":3590,
\"SupplierCode\":\"ENCLES\"
}
}",
...
}
ビットは、情報データである - それは別のネストされたJSON文字列です。
私のクラスには、次のとおりです。データを試してみて、アクセスするための
public class TheatreListing
{
public supplier supplier;
}
public class supplier
{
public int? supplierid { get; set; }
public string code { get; set; }
public string name { get; set; }
public listingInfo info { get; set; }
}
public class listingInfo
{
public Address Supplier { get; set; }
}
public class Address
{
public string Address1 { get; set; }
public string Address2 { get; set; }
public string Address3 { get; set; }
public string Address4 { get; set; }
public string Address5 { get; set; }
public string PostCode { get; set; }
}
私のコードです:私は取得しています
TheatreListing tl = Json.Decode<TheatreListing>(json);
StringBuilder sbb = new StringBuilder();
sbb.Append("Name = " + tl.supplier.name.ToString());
sbb.Append("<br />Supplier ID = " + tl.supplier.supplierid.ToString());
sbb.Append("<br />Code = " + tl.supplier.code.ToString());
sbb.Append("<br />Address = " + tl.supplier.info.Supplier.Address2.ToString());
litOutput.Text += sbb.ToString();
エラーメッセージは次のとおりです。
Cannot convert object of type 'System.String' to type 'listingInfo'
缶だれでもしてくださいここに私の方法のエラーで私を導く?
乾杯
ナイジェル
私は内部のものを直列化して 'string'にデシリアライズし、2番目のパスでそれを正しいタイプにデシリアライズすることをお勧めします。カスタムタイプのコンバータを登録することは可能かもしれませんが(理想的にはこのような醜い方法でネストされません):// –
"info": "{\" Supplier \ ":..."情報 "ではない:{\"サプライヤー\ ":(前の引用符を入れないで中かっこ) – mho