C# 重写ServiceStack中的字段名反序列化
我有一个使用autoquery的服务,它的响应dto如下所示C# 重写ServiceStack中的字段名反序列化,c#,servicestack,C#,servicestack,我有一个使用autoquery的服务,它的响应dto如下所示 [DataContract(Name = "list_item", Namespace = "")] public class ListItem { [DataMember(Name = "list_id",)] public String ListId { get; set; } [DataMember(Name = "first_name")] public String FirstName {
[DataContract(Name = "list_item", Namespace = "")]
public class ListItem
{
[DataMember(Name = "list_id",)]
public String ListId { get; set; }
[DataMember(Name = "first_name")]
public String FirstName { get; set; }
}
当我使用不带空格的自动查询时,它会返回正确的结果,但使用空格时,自动查询不起作用
在apphost.cs中,我添加了以下代码
private void ConfigSerializer(Container container)
{
JsConfig.PropertyConvention = PropertyConvention.Lenient;
JsConfig.EmitLowercaseUnderscoreNames = true;
}
但当我使用下划线时,仍然无法得到结果。
我缺少什么?这显示了自动查询支持带有自定义别名字段的请求DTO,如此自动查询服务中所示:
[DataContract]
[Route("/rockstars")]
public class QueryRockstars : QueryBase<Rockstar>
{
[DataMember(Name = "first_name")]
public string FirstName { get; set; }
}
ServiceStack也已更新,以查看基础表上的任何匹配别名,因此现在您可以在查询表上使用字段约定,例如:
[Route("/search")]
public class QueryPerson : QueryBase<Person> {}
[DataContract]
public class Person
{
[DataMember]
public int Id { get; set; }
[DataMember(Name = "first_name")]
public string FirstName { get; set; }
[DataMember]
public string LastName { get; set; }
}
var response = "http://example.org/search"
.AddQueryParam("first_name", "Jimi")
.GetJsonFromUrl()
.FromJson<QueryResponse<Person>>();
response.PrintDump();
这些更改可从现在的v4.0.41+中获得
[Route("/search")]
public class QueryPerson : QueryBase<Person> {}
[DataContract]
public class Person
{
[DataMember]
public int Id { get; set; }
[DataMember(Name = "first_name")]
public string FirstName { get; set; }
[DataMember]
public string LastName { get; set; }
}
var response = "http://example.org/search"
.AddQueryParam("first_name", "Jimi")
.GetJsonFromUrl()
.FromJson<QueryResponse<Person>>();
response.PrintDump();
JsConfig.EmitLowercaseUnderscoreNames = true;
var response = "http://example.org/search"
.AddQueryParam("last_name", "Hendrix")
.GetJsonFromUrl()
.FromJson<QueryResponse<Person>>();