我正在使用休息服务,但是当我对 JSON 字符串进行反序列化时,它会引发此异常吗?这个例外是什么意思?
班级
public class Product
{
public string PROD
{
get { return prod; }
set { prod = value; }
}
//Department Number
[JsonProperty("DPID")]
public int DPID
{
get { return dpid; }
set { dpid = value; }
}
//Sub Department Number
[JsonProperty("SDID")]
public int SDID
{
get { return sdid; }
set { sdid = value; }
}
//Category Number
[JsonProperty("CGID")]
public int CGID
{
get { return cgid; }
set { cgid = value; }
}
//Sub Category Number
[JsonProperty("SCID")]
public int SCID
{
get { return scid; }
set { scid = value; }
}
//Product Description
[JsonProperty("PDSC")]
public string PDSC
{
get { return pdsc; }
set { pdsc = value; }
}
//Product Brand
[JsonProperty("PBRN")]
public string PBRN
{
get { return pbrn; }
set { pbrn = value; }
}
//Season Code
[JsonProperty("SESN")]
public string SESN
{
get { return sesn; }
set { sesn = value; }
}
//Issue Quantity
[JsonProperty("IQTY")]
public string IQTY
{
get { return iqty; }
set { iqty = value; }
}
//Currency Code
[JsonProperty("CURR")]
public string CURR
{
get { return curr; }
set { curr = value; }
}
//Selling Price
[JsonProperty("SELL")]
public decimal SELL
{
get { return sell; }
set { sell = value; }
}
//Product SKU Code
[JsonProperty("PSKU")]
public string PSKU
{
get { return psku; }
set { psku = value; }
}
//Product Size
[JsonProperty("PSZE")]
public string PSZE
{
get { return psze; }
set { psze = value; }
}
//Product Colour
[JsonProperty("PCOL")]
public string PCOL
{
get { return pcol; }
set { pcol = value; }
}
//Pre-pack Code
[JsonProperty("PPCD")]
public string PPCD
{
get { return ppcd; }
set { ppcd = value; }
}
//Image URL
public string IURL
{
get { return iurl; }
set { iurl = value; }
}
[JsonProperty("DPDS")]
public string DPDS
{
get { return dpds; }
set { dpds = value; }
}
}
消费者
这是我用来消费其余服务的东西,然后它向我发送一个 JSON 字符串,我将其反序列化为一个称为产品的 Observable Collection 类型的对象。
public ObservableCollection<Product> products = new ObservableCollection<Product>();
public async Task<ObservableCollection<Product>> GetProducts()
{
try
{
string uri = url + "/product;
_client.Timeout = TimeSpan.FromSeconds(300);
HttpRequestMessage message = new HttpRequestMessage(HttpMethod.Get, uri);
var response2 = await _client.SendAsync(message);
if (response2.IsSuccessStatusCode)
{
var content = await response2.Content.ReadAsStringAsync();
var prodlist = JsonConvert.DeserializeObject<ObservableCollection<Product>>(content);
products = prodlist;
return products;
}
else if (response2.StatusCode == HttpStatusCode.NotFound)
{
return products;
}
return products;
}
catch (JsonException ex)
{
throw ex;
}
}
JSON字符串
URI 在调用时会返回此格式的大字符串。
{
"PROD": "5510B-BK ",
"DPID": 0,
"SDID": 0,
"CGID": 0,
"SCID": 0,
"SPID": 0,
"PDSC": "5510B BLACK BOAT SHOE ",
"PBRN": "Footwear Direct",
"SESN": "2018 ",
"IQTY": "Pair ",
"CURR": "ZAR",
"SELL": 0,
"PSKU": "5510B-BK ",
"PSZE": "12 ",
"PCOL": "BK ",
"PPCD": "A ",
"DPDS": "None "
}
异常消息
请注意,这是在拉单个产品时所说的,但在拉所有对象时会发生同样的事情,位置会发生变化。
转换值“{“PROD”:“5510B-BK”,“DPID”:0,“SDID”:0,“CGID”:0,“SCID”:0,“SPID”:0,“PDSC”:”时出错5510B BLACK BOAT SHOE ","PBRN":"Footwear Direct","SESN":"2018","IQTY":"Pair","CURR":"ZAR","SELL":0.0000,"PSKU":" 5510B-BK ","PSZE":"12","PCOL":"BK","PPCD":"A ","DPDS":"None "}" 输入“WarehouseProMobile.Models.Product”。路径 '',第 1 行,位置 427。
解决了
结果我的其余 API 序列化为 JSON,当对象通过网络发送时,Web 服务器也序列化了我的对象,这使得字符串无用。通过调整 API 以仅发送对象来解决此问题。