![](/img/trans.png)
[英]'Newtonsoft.Json.JsonConvert.DeserializeObject(string)' has some invalid arguments
[英]WebApi Newtonsoft.Json.JsonConvert.DeserializeObject <Class> Error
我正在Visual Studio 2013中執行WebApi方法,並且想反序列化類類型。 我的班是這樣的
[JsonObject]
class JOTA
{
[JsonProperty("ProductId")]
public int ProductId { get; set; }
[JsonProperty("Name")]
public string Name { get; set; }
}
我的電話是這樣的。
public void ReturnListProd(JOTA PP)
{
JOTA product = Newtonsoft.Json.JsonConvert.DeserializeObject<JOTA>(PP);
}
我有一個編譯錯誤
'Network.Json.Json.Converter[] has some invalid argument'
但是,如果定義一個ArrayList
public void ReturnListProd(ArrayList PP)
{
JOTA product = Newtonsoft.Json.JsonConvert.DeserializeObject<JOTA>(PP[0].ToString());
}
我沒有錯。 但是在這種情況下,它對我所需要的沒有幫助。
我缺少什么? 謝謝
如果要讓JOTA對象成為其自身的字符串表示形式(序列化它),則應使用
string serialized = Newtonsoft.Json.JsonConvert.SerializeObject(PP);
如果您希望字符串成為JOTA對象,則使用
JOTA product = Newtonsoft.Json.JsonConvert.DeserializeObject<JOTA>(serialized);
問題是您正在嘗試反序列化未序列化的對象(已反序列化)。
如果屬性名稱相同,則不需要屬性。
public class JOTA
{
public int ProductId { get; set; }
public string Name { get; set; }
}
public void ReturnListProd(JOTA PP)
{
var product = PP; //not really needed you can just use PP directly
}
如果接收到json字符串,則僅需要反序列化。 因為您正在使用WebAPI,所以建議您將API端點更改為適當的REST端點。 例:
[HttpPost, Route("api/products/add")]
public IHttpActionResult ReturnListProd([FromBody]JOTA PP)
{
try
{
//do something with passed in data
var name = PP.Name;
//always at minimum return a status code
return Ok();
}
catch
{
//returns 500
return InternalServerError();
}
}
然后將ajax網址從: 網址:“ yourController / ReturnListProd”更改為: 網址:“ / api / products / add”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.