在C#中将String转换为Json对象,使用Json.Net

Ta *_* Bi 14 c# json json.net

我有一个字符串:

[
  {
    "key": "key1",
    "value": "{'Time':'15:18:42','Data':'15:18:42'}",
    "duration": 5
  },
  {
    "key": "key1",
    "value": "{'Time':'15:18:42','Data':'15:18:42'}",
    "duration": 5
  }
]
Run Code Online (Sandbox Code Playgroud)

我在模特课上:

public class CPacket
{
    public string key { get; set; }
    public string value { get; set; }
    public int duration { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我使用Json.Net,我想将字符串波纹管转换为Json Oject.

CPacket c = JsonConvert.DeserializeObject<CPacket>(strPostData);
Run Code Online (Sandbox Code Playgroud)

但它错误:

Newtonsoft.Json.dll中发生了'Newtonsoft.Json.JsonSerializationException'类型的异常,但未在用户代码中处理
其他信息:无法将当前JSON数组(例如[1,2,3])反序列化为类型'QuoteAPI.Models .CPacket'因为类型需要JSON对象(例如{"name":"value"})才能正确反序列化.

Bri*_*ers 30

您的JSON表示CPacket对象数组,而不仅仅是单个对象.您需要反序列化到列表中.

List<CPacket> list = JsonConvert.DeserializeObject<List<CPacket>>(strPostData);
Run Code Online (Sandbox Code Playgroud)