[英]Passing multiple objects from JSON array into MVC application
我有一個 MVC 應用程序,我想從中使用 API,其結構如下所示。 但是,我得到了一個錯誤
Object 引用未設置為 object 的實例
在下面的 Web Api controller
public IHttpActionResult Post(MyViewModel myViewModel)
{
MasterFile ord = myViewModel.MasterFile;
var ordDetails = myViewModel.LineItems;
return Ok();
}
我的模型結構如下:
public class MasterFile
{
public string payer_prov_name { get; set; }
public int roaming_amount { get; set; }
public ICollection<LineItems> LineItems { get; set; }
}
public class LineItems
{
public string prov_item_name { get; set; }
[Key]
public int item_id { get; set; }
}
public class MyViewModel
{
public MasterFile MasterFile { get; set; }
public LineItems[] LineItems { get; set; }
}
JSON 的結構如下 - 我刪除了一些字段,因為它們相當多:
(
[0] => Array
(
[payer_prov_name]
[roaming_amount]
[claim_code]
[invoices] => Array
(
[0] => Array
(
[line_items] => Array
(
[0] => Array
(
[prov_item_name]
[prov_item_code]
[payer_group_code]
[item_id]
)
[1] => Array
(
[prov_item_name]
[prov_item_code]
)
)
[payer_benefit_desc]
[payer_benefit_code]
[invoice_id]
)
)
[diagnosis] => Array
(
[0] => Array
(
[code]
[coding_standard]
)
)
[start_date]
[end_date]
)
)
)
關於如何構建它的任何幫助都會有所幫助
當我使用外部 API 時,我在 Newtonsoft.Json.Z06416233FE5EC4C593Z3122E4AB248AF1 中使用JsonConvert.DeserializeObject
和JsonConvert.SerializeObject
。 但是,您發布的內容看起來不像 json。
RecieveDocument doc = JsonConvert.DeserializeObject<Document>(json);
我有struct RecieveDocument
,其屬性類似於 json
public struct RecieveDocument
{
public int? Id { get; set; }
public string DocumentNumber { get; set; }
public string ExternalDocumentNumber { get; set; }
public string ExternalId1 { get; set; }
public IEnumerable<TrackingParameter> TrackingParameters { get; set; }
}
或者我用這個
[JsonProperty("access_token")]
public string AcessToken { get; set; }
[JsonProperty("token_type")]
public string TokenType { get; set; }
[JsonProperty("expires_in")]
private int Expires
序列化程序可以處理這些屬性。 您可以從結構/類創建 json 或從 json 創建實例。 請記住,如果您獲得 null,在任何 json 屬性中,您必須具有可為空的類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.