获取错误:Newtonsoft.Json.JsonSerializationException:'无法反序列化当前JSON对象(例如{“name”:“value”})转换为类型'myclass'

ql3eal8s  于 2023-08-08  发布在  其他
关注(0)|答案(2)|浏览(209)

我正在尝试反序列化JavaScript类型的JSON

"{\n  \"resultSet1\": [\n    {\n      \"AgentID\": 13173,\n      \"FirstName\": \"Drilon\",\n      \"SG_ID\": 14336,\n      \"LoginName\": \"UI813926\",\n      \"SG_Description\": \"LKC Bauhotline\",\n      \"SG_Name\": \"Y_BAU__FO\",\n      \"EnterpriseName\": \"LKC_Abdullahu_Drilon\",\n      \"LastName\": \"Abdullahu\"\n    },\n    {\n      \"AgentID\": 14432,\n      \"FirstName\": \"Pinar\",\n      \"SG_ID\": 14336,\n      \"LoginName\": \"UI938008\",\n      \"SG_Description\": \"LKC Bauhotline\",\n      \"SG_Name\": \"Y_BAU__FO\",\n      \"EnterpriseName\": \"LKC_Ali_Pinar\",\n      \"LastName\": \"Ali\"\n    },  ]\n}"

字符串
代理和代理类包括

public class Agent
{
    public int AgentID { get; set; }
    public string FirstName { get; set; }
    public int SG_ID { get; set; }
    public string LoginName { get; set; }
    public string SG_Description { get; set; }
    public string SG_Name { get; set; }
    public string EnterpriseName { get; set; }
    public string LastName { get; set; }
}

public class Agents : IEnumerable<Agent>
{
    public List<Agent> resultSet1 { get; set; }

    public IEnumerator<Agent> GetEnumerator()
    {
        return ((IEnumerable<Agent>)resultSet1).GetEnumerator();
    }

    IEnumerator IEnumerable.GetEnumerator()
    {
        return ((IEnumerable)resultSet1).GetEnumerator();
    }
}


使用Newtonsoft.json,如下所示:

Agents result = JsonConvert.DeserializeObject<Agents>(responseString);


并得到以下错误:
Newtonsoft.Json.JsonSerializationException:'无法反序列化当前JSON对象(例如{“name”:“value”})转换为类型'myclass',因为该类型需要JSON数组(例如[1,2,3])以正确地反序列化。
它可以通过nancy.json库进行反序列化。

Agents AgentsData = new JavaScriptSerializer().Deserialize<Agents>(responseString);

2nc8po8w

2nc8po8w1#

Agents实现了IEnumerable<>,用JsonObjectAttribute标记它以强制反序列化为/来自对象:

[JsonObject]
public class Agents : IEnumerable<Agent>
{
    ...
}

字符串

9rygscc1

9rygscc12#

请检查以下几点:
1.确保Agents类具有与json中定义的相同的键。应该和下面的课差不多

public class Agents
 {
     public int AgentID { get; set; }
     public string FirstName { get; set; }
     public int SG_ID { get; set; }
     public string LoginName { get; set; }
     public string SG_Description { get; set; }
     public string SG_Name { get; set; }
     public string EnterpriseName { get; set; }
     public string LastName { get; set; }
 }

字符串
1.你的json也有多个代理ID的数据,请尝试下面的行进行转换:

List<Agents> AgentsData = new JavaScriptSerializer().Deserialize<List<Agents>>(responseString);

相关问题