servicestack,C#,servicestack" /> servicestack,C#,servicestack" />

C# 使用特定json的ServiceStack Restful请求

C# 使用特定json的ServiceStack Restful请求,c#,servicestack,C#,servicestack,我需要使用服务堆栈创建一个请求,该请求生成此JSON请求: [ "ABC1234", "ABC5678", "ABC9122" ] 我试过这个: [Route("/getconsignments/{ConsignmentNumbers}", "POST")] public class GetConsignments : IReturn<PublishManifestResponse> { public string[] ConsignmentNumb

我需要使用
服务堆栈
创建一个请求,该请求生成此
JSON
请求:

[
    "ABC1234",
    "ABC5678",
    "ABC9122"
]
我试过这个:

[Route("/getconsignments/{ConsignmentNumbers}", "POST")]
public class GetConsignments : IReturn<PublishManifestResponse>
{
    public string[] ConsignmentNumbers { get; set; }
}

public class PublishManifestResponse
{   
    [DataMember(Name = "ManifestNumber")]
    public string ManifestNumber { get; set; }
    [DataMember(Name = "ManifestedConnotes")]
    public string[] ManifestedConnotes { get; set; }
}
[路线(“/GetCommissions/{CommissionNumber}”,“邮寄”)]
公共类GetDelivents:IReturn
{
公共字符串[]委托编号{get;set;}
}
公开课发表回应
{   
[DataMember(Name=“ManifestNumber”)]
公共字符串编号{get;set;}
[DataMember(Name=“manifestedcondents”)]
公共字符串[]显式表示{get;set;}
}
但它并没有生成我需要处理的请求

而且

如何在请求中填充json数据

var request = new List<string>();
request.Add("abcd");
reuqest.Add("wewwq");

var client = new Client(new JsonServiceClient(appSettings.GetString("host")));
var result = client.GetConsignments(request.ToArray());
var请求=新列表();
请求。添加(“abcd”);
reuqest.添加(“wewwq”);
var client=newclient(newjsonserviceclient(appSettings.GetString(“主机”)));
var result=client.getcommissions(request.ToArray());

类似的情况?

您可以通过以下方式接受批量请求,例如:

在路由的
/path/info
部分中不应该有复杂的类型,如
字符串[]
,如果除了请求正文之外还需要发送
委托编号[]
,则应该在查询字符串上指定,而您需要从路由中删除它,例如:

[Route("/getconsignments", "POST")]
public class GetConsignments : List<string>, IReturn<PublishManifestResponse> 
{
    public string[] ConsignmentNumbers { get; set; }
}
但是,如果您只需要JSON数组,则只需要一个空的请求DTO定义,例如:

[Route("/getconsignments", "POST")]
public class GetConsignments : List<string>, IReturn<PublishManifestResponse> {}

@RogerOliveira不在您显示的请求json中,这只是一组字符串。@RogerOliveira我已经用有效的示例更新了答案,因为您提供了一个不寻常的路由定义。@RogerOliveira好的,那么我的最后一个示例应该涵盖它。@RogerOliveira在
IReturn
中的内容与描述服务接受的请求DTO定义无关,
IReturn
应该匹配您的服务返回的任何内容。@RogerOliveira是否添加属性?你是说访问JSON数组值?请求DTO已经是一个
列表
,因此您可以将其视为一个列表。
[Route("/getconsignments", "POST")]
public class GetConsignments : List<string>, IReturn<PublishManifestResponse> 
{
    public string[] ConsignmentNumbers { get; set; }
}
POST /getconsignments?ConsignmentNumbers=1,2,3
[
    "ABC1234",
    "ABC5678",
    "ABC9122"
]
[Route("/getconsignments", "POST")]
public class GetConsignments : List<string>, IReturn<PublishManifestResponse> {}
POST /getconsignments
[
    "ABC1234",
    "ABC5678",
    "ABC9122"
]