【问题标题】:Sending Json Arrays within Object to API将对象内的 Json 数组发送到 API
【发布时间】:2018-03-21 17:32:37
【问题描述】:

我需要将对象中的数组发布到 api,如下所示:

{
  "ds_seatInfo": [
    {
      "SEAT_LOC_NO": "00201901",
      "SEAT_LOC_NO": "00201902"
    }
  ],
  "SCN_SCH_SEQ": "13178",
  "REQ_FG_CD": "01",
  "LOCK_APRV_KEY": "123123"
}

我尝试使用定义如下的模型:

 public class ds_seatInfo
    {
        public List<string> SEAT_LOC_NO { get; set; }
    }

 public class BookParam
    {
        public string SCN_SCH_SEQ { get; set; }
        public ds_seatInfo ds_seatInfo { get; set; }
        public string REQ_FG_CD { get; set; }
        public string LOCK_APRV_KEY { get; set; }
    }

但结果并不如预期,那是模型返回:

"{\"SCN_SCH_SEQ\":\"13178\",\"ds_seatInfo\":{\"SEAT_LOC_NO\":[\"00201901\",\"00201902\"]},\"REQ_FG_CD\":\"01\",\"LOCK_APRV_KEY\":\"123123\"}"

这意味着 SEAT_LOC_NO 未按预期读取。我正在使用 Newtonsoft 对模型进行序列化。

我该怎么办?

【问题讨论】:

  • WebApi 操作的方法签名是什么?
  • @DiskJunky HTTPPost
  • 我的意思是方法是如何声明的,例如public void DoSomething(SomeObject param1, ...)
  • 我不知道,因为我从另一个供应商那里获得了 API。他们不提供文档。只是一种执行其参数的方法。
  • 然后创建一个接受 JSON 的测试 web api 项目并尝试在您自己的代码中解析它。这将帮助您找出您没有正确的部分

标签: c# json post asp.net-web-api json.net


【解决方案1】:

尚未对其进行测试,但这可能会帮助您或让您朝着正确的方向前进:

public class BookParam
{
    [JsonProperty("ds_seatInfo")]
    public List<KeyValuePair<string, string>> SetInfos = new List<KeyValuePair<string, string>>();

    [JsonProperty("SCN_SCH_SEQ")]
    public string ScnSchSeq { get; set; }

    [JsonProperty("REQ_FG_CD")]
    public string ReqFgCd { get; set; }

    [JsonProperty("LOCK_APRV_KEY")]
    public string LockAprvKey { get; set; }
}

当您将项目添加到 SetInfos 时,请尝试如下:

SetInfos.Add(new KeyValuePair<string, string>("SEAT_LOC_NO", "00201901"));

编辑

另一种可能的实现

public class BookParam
{
    [JsonProperty("ds_seatInfo")]
    public List<SeatInfo> DsSeatInfo = new List<SeatInfo>();

    [JsonProperty("SCN_SCH_SEQ")]
    public string ScnSchSeq { get; set; }

    [JsonProperty("REQ_FG_CD")]
    public string ReqFgCd { get; set; }

    [JsonProperty("LOCK_APRV_KEY")]
    public string LockAprvKey { get; set; }
}

public class SeatInfo()
{
     [JsonProperty("SEAT_LOC_NO")]
     public string SeatLocNo { get; set; }
}

【讨论】:

  • 谢谢你,这个解决了我的问题。虽然它也在对象内部发送“键”和“值”。
  • 没问题,我添加了另一种方式的编辑,它也可能对您有用,不会出现键值问题。
猜你喜欢
  • 2012-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-25
  • 2016-12-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多