[英]Newtonsoft.Json Deserialize issue
嘗試從Web API反序列化JSON。 這是傳入的json:
{"0":{"productname":"France and the French",
"imageurl":"http://img.rakuten.com/PIC/32994457/0/1/250/32994457.jpg",
"producturl":"http://www.theurl.com/rd.aspx?3d",
"price":"19.51",
"currency":"USD",
"saleprice":"",
"storename":"Buy.com (dba Rakuten.com Shopping)"}
}
這是我的數據類:
public class Product
{
[JsonProperty("productname")]
public string productname { get; set; }
[JsonProperty("imageurl")]
public string imageurl { get; set; }
[JsonProperty("producturl")]
public string producturl { get; set; }
[JsonProperty("price")]
public string price { get; set; }
[JsonProperty("currency")]
public string currency { get; set; }
[JsonProperty("saleprice")]
public string saleprice { get; set; }
[JsonProperty("storename")]
public string storename { get; set; }
}
這是代碼:
string json = upcclient.GetProductJSON(upc, accessToken);
Product myproduct = JsonConvert.DeserializeObject<Product>(json);
應該很簡單。 json正在填充,但是無論我如何嘗試-作為主數據類中的產品列表,產品數組等的產品列表,myproduct永遠不會填充。
我在這里先向您的幫助表示感謝。 這些東西通常並不難。 我已經完成了50次左右,但這一次已經到了。
在您發布的示例JSON中, Product
是一個包含在根對象的0
字段中的對象,並且該根對象似乎未使用JSON數組語法。 不幸的是,如果您希望獲得任意數量的結果,則很難優雅地映射到C#類。 如果您知道只會得到一種產品,則只需添加一個根類:
public class ProductWrapper
{
[JsonProperty("0")]
public Product Product
{
get;
set;
}
}
並做:
string json = upcclient.GetProductJSON(upc, accessToken);
Product myproduct = JsonConvert.DeserializeObject<ProductWrapper>(json).Product;
我懷疑此API旨在返回多個產品,因此,這可能不是您想要的。 如果這是您可以控制的API,則可能值得要求JSON實際上返回產品數組 ,而不是它現在返回的對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.