Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 反序列化对象JSON错误_C#_.net_Json_Serialization - Fatal编程技术网

C# 反序列化对象JSON错误

C# 反序列化对象JSON错误,c#,.net,json,serialization,C#,.net,Json,Serialization,我需要反序列化一个对象。我有一个请求类 public class LegacyDataRequest { public string RowId { get; set; } public string SchemaName { get; set; } public string TableName { get; set; } public string SelectStatement { get; set; } }

我需要反序列化一个对象。我有一个请求类

public class LegacyDataRequest
    {
        public string RowId { get; set; }
        public string SchemaName { get; set; }
        public string TableName { get; set; }
        public string SelectStatement { get; set; }
    }
这是反应课

public class LegacyDataResponse
    {
        public List<KeyData> List { get; set; }
    }
我犯了一个错误

无法反序列化当前JSON对象(例如{“名称”:“值”}) 打字 'System.Collections.Generic.List`1[BankPozitif.CRM.Library.ZeusApi.LegacyDataResponse]' 因为该类型需要一个JSON数组(例如[1,2,3])来反序列化 没错

要修复此错误,请将JSON更改为JSON数组(例如。 [1,2,3])或更改反序列化类型,使其成为普通的.NET 类型(例如,不是integer之类的基元类型,也不是集合类型 类似于数组或列表),可以从JSON对象反序列化。 还可以将JsonObjectAttribute添加到类型以强制其 从JSON对象反序列化


我该怎么解决呢?

我想问题就在这里

{"Key":"ADRES","Data":"DENİZ SEMA Site: 3"}
换成

{"Key":"ADRES","Data":"DENİZ SEMA", "Site": 3"}

我找到了解决办法。我删除了“.SubString()”,问题就解决了。

您反序列化为错误的类型

public class Item
{
    public string Key { get; set; }
    public string Data { get; set; }
}

var res = JsonConvert.DeserializeObject<List<Item>>(response));
公共类项目
{
公共字符串密钥{get;set;}
公共字符串数据{get;set;}
}
var res=JsonConvert.DeserializeObject(响应));

您是如何从返回键值映射到具有这些属性的类的JSON中获得这些属性的?它们根本不存在于JSON中。为什么要使用Substring()?这将删除[]数组命名符,因此出现错误。@YuvalItzchakov这是请求类。Not response classIt是响应字符串。这不是问题。应该有2个参数;键和数据,它是数据内容。
{"Key":"ADRES","Data":"DENİZ SEMA", "Site": 3"}
public class Item
{
    public string Key { get; set; }
    public string Data { get; set; }
}

var res = JsonConvert.DeserializeObject<List<Item>>(response));