簡體   English   中英

WebApi Newtonsoft.Json.JsonConvert.DeserializeObject <Class> 錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM