如何创建上述请求结构以使用C#调用服务

时间:2017-08-07 18:11:13

标签: c# json

这是我的代码

public class DetailRequest
{
    public DetailRequest(string IDs, string Names, string Amounts)
    {   
        REQDTL = new List<Detail>();
        Detail detail = new Detail();
        detail.ID = IDs;
        detail.NAME = Names;
        detail.AMOUNT = Amounts; 
        REQDTL.Add(detail);
    }
    public List<Detail> REQDTL { get; set; }
    public class Detail
    {
        [Description("ID")]
        public string ID { get; set; }
        [Description("NAME")]
        public string NAME { get; set; }
        [Description("AMOUNT")]
        public string AMOUNT { get; set; }
    }
}

并且

private static string _Serialize<T>(T entity)
{
    return JsonConvert.SerializeObject(entity);
}

我在JSON转换后得到以下结构

{
   "REQDTL":[
      {
         "ID":"148488,148489,148486",
         "NAME":"Test1,Test2,Test3",
         "AMOUNT":"500,600,700"
      }
   ]
}

但我想要求如下结构

{
   "REQDTL":[
      {
         "ID":"148488",
         "NAME":"Test1",
         "AMOUNT":"500"
      },
      {
         "ID":"148489",
         "NAME":"Test2",
         "AMOUNT":"600"
      },
      {
         "ID":"148486",
         "NAME":"Test3",
         "AMOUNT":"700"
      }
   ]
}

1 个答案:

答案 0 :(得分:1)

我认为你应该修改DetailRequest构造函数:

public DetailRequest(string IDs, string Names, string Amounts)
{
    REQDTL = IDs.Split(',').Zip(Names.Split(','), (id, name) => new {id, name})
        .Zip(Amounts.Split(','), (x, amount) => new Detail
        {
            ID = x.id,
            NAME = x.name,
            AMOUNT = amount
        }).ToList();
}    

用法

var entity = new DetailRequest("148488,148489,148486", "Test1,Test2,Test3", "500,600,700");
var res = JsonConvert.SerializeObject(entity);