如何使用mvc5解析数组中具有多个对象的JSON?

时间:2017-09-27 17:07:36

标签: arrays json asp.net-web-api

我有一个Web API,在调用时会返回JSON。问题是它返回具有多个对象的JSON数组。我需要为我的班级解析它来创建一个网格。

您可以查看my api here

我在解析时遇到错误

  

块引用   “Newtonsoft.Json.JsonSerializationException:'无法将当前JSON数组(例如[1,2,3])反序列化为类型'OpsArc.Models.OnBoardingDetailsWithResourceDTO',因为该类型需要一个JSON对象(例如{”name“:”value“ })正确地反序列化。

     

要修复此错误,请将JSON更改为JSON对象(例如{“name”:“value”})或将反序列化类型更改为数组或实现集合接口的类型(例如ICollection,IList)可以从JSON数组反序列化的列表。 JsonArrayAttribute也可以添加到类型中以强制它从JSON数组反序列化。   路径'',第1行,第1位。'“

1 个答案:

答案 0 :(得分:0)

您可以使用this website (JSON2CSharp)将您的json输出转换为各自的类。您将获得以下输出

public class ThisResource
{
    public string id { get; set; }
    public object empRec { get; set; }
    public int createdBy { get; set; }
    public object payrollId { get; set; }
    public int resourceTypeID { get; set; }
    public string resourceTypeValue { get; set; }
    public string resourceTypeStoredValue { get; set; }
    public string ssn { get; set; }
    public string lastName { get; set; }
    public string middleName { get; set; }
    public string firstName { get; set; }
    public string localEmployeeId { get; set; }
    public int resourceStatusId { get; set; }
    public object resourceStatusValue { get; set; }
    public object resourceStatusStoredValue { get; set; }
    public object vendorId { get; set; }
    public object alertRec { get; set; }
    public object alertNote { get; set; }
    public object divRec { get; set; }
    public object repRec { get; set; }
    public object hold { get; set; }
    public object holdNote { get; set; }
    public object cdid { get; set; }
    public object shortNotes { get; set; }
    public object doNotPlace { get; set; }
    public object modifiedBy { get; set; }
    public object lastModifiedOn { get; set; }
    public DateTime ts { get; set; }
}

public class ThisBoardingDetails
{
    public string id { get; set; }
    public string resourceOnboardingID { get; set; }
    public int desiredResourceTypeID { get; set; }
    public int offerExpires { get; set; }
    public object desiredResourceTypeValue { get; set; }
    public object desiredResourceTypeStoredValue { get; set; }
    public string jobOrderID { get; set; }
    public string backgroundCheckID { get; set; }
    public int emailID { get; set; }
    public string requestDate { get; set; }
    public object onboardingRequest { get; set; }
    public int onboardingStatusCode { get; set; }
    public string resourceID { get; set; }
}

public class RootObject
{
    public ThisResource thisResource { get; set; }
    public ThisBoardingDetails thisBoardingDetails { get; set; }
}

你需要解决一些问题,但这是一个足够好的资源,可以帮助你开始。