将Json字符串转换为Object C#时如何解决Error?

时间:2019-05-06 07:19:19

标签: c# json

我正在使用 C#从本地PC数据文件夹中获取文件。
这是执行此操作的代码:

var _rootpath = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + directory;
var ENC = new Encryption();
var s = File.ReadAllText(_rootpath + "json");
var x = ENC.RijndaelDecrypt(s, App.EncryptionPassword);

到目前为止,效果很好。
x现在得到了这个值(所以这是我想要转换为对象的字符串):

{  
"items":[  
   {  
      "id":194,
      "guid":"594394",
      "name":"Test",
      "connectorId":248,
      "customerId":1,
      "customerName":"company",
      "connectorTypeId":10,
      "connectorTypeIcon":null,
      "connectorCategoryId":1,
      "vendor":"FasterForward",
      "isActive":true,
      "shopId":null,
      "sku":null,
      "workerBearerToken":"",
      "workerUri":"http://localhost:9000"
   }
],
"responseStatus":null
}

此后,我想将其转换为对象

var _response = JsonConvert.DeserializeObject<CrmJobListResponse>(x);

此行显示错误:

{"Error converting value x to type 'ServiceModel.CrmJobListResponse'. Path '', line 1, position 991."}

ServiceModel.CrmJobListResponse:

namespace ServiceModel
{
  public class CrmJobListResponse : ResponseBase
  {
   public CrmJobListResponse();

   public List<CrmJob> Items { get; set; }
  }
}

CrmJob类:

namespace ServiceModel.DTO
{
  public class CrmJob : IHasId<int>
  {
   public CrmJob();

   [Ignore]
   public string WorkerBearerToken { get; set; }
   [PropertyValue("sku")]
   public string SKU { get; set; }
   [PropertyValue("shop_id")]
   public string ShopId { get; set; }
   public bool IsActive { get; set; }
   public string Vendor { get; set; }
   public int ConnectorCategoryId { get; set; }
   [Ignore]
   public string WorkerRefreshToken { get; set; }
   public string ConnectorTypeIcon { get; set; }
   public string CustomerName { get; set; }
   public int CustomerId { get; set; }
   public int ConnectorId { get; set; }
   [PropertyValue("jobname")]
   public string Name { get; set; }
   public string Guid { get; set; }
   public int Id { get; set; }
   public int ConnectorTypeId { get; set; }
   [Ignore]
   public string WorkerUri { get; set; }
  }
}

有人知道为什么它无法将我的Json字符串转换为对象吗?
我不是自己编写代码的,但是我不明白为什么它应该出错...

1 个答案:

答案 0 :(得分:0)

如果您在创建DTO时遇到困难,可以使用一些工具来https://app.quicktype.io/

您还可以在VS中使用特殊粘贴到paste a Json directy to a C# class

这还会显示您是否畸形了Json。