我是新來的使用json - 我正在使用現有的json數據結構並嘗試輸出數據,但現有數據結構的一部分讓我難住。c#反序列化嵌套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'
誰能請在這裏指導我的方式錯誤?
乾杯
奈傑爾
我會建議反序列化內部的東西到一個「串」,然後反序列化,在第二遍傳遞給正確的類型。它可能會註冊一個自定義類型的轉換器,但是...(理想情況下,它不會嵌套在這樣一個醜陋的方式: - /) – 2012-04-01 23:28:19
對不起,應該「info」:「{\」Supplier \ 「:...不是」信息「:{\」供應商\「:(無先前引用的大括號)以及結束大括號的相同事情? – mho 2012-04-02 02:13:46