C# ServiceStack自动查询部分响应返回不需要的GUID、int等
我正在处理ServiceStack对AutoQuery的部分响应,代码片段如下:C# ServiceStack自动查询部分响应返回不需要的GUID、int等,c#,
servicestack,C#,
servicestack,我正在处理ServiceStack对AutoQuery的部分响应,代码片段如下: public class SalesOrderServices : MyService { Utilities.RequestUtilities utilities = new Utilities.RequestUtilities(); public object Any(SalesOrdersGet request) { Strin
public class SalesOrderServices : MyService
{
Utilities.RequestUtilities utilities = new Utilities.RequestUtilities();
public object Any(SalesOrdersGet request)
{
String qString = GetSelectString(base.Request);
var q = AutoQuery.CreateQuery(request, Request.GetRequestParams());
if (!qString.IsNullOrEmpty())
{
q.Select(qString);
}
return AutoQuery.Execute(request, q);
}
它继承了MyService
namespace WombatWS.ServiceInterface.Sales
{
public class MyService : Service
{
public IAutoQuery AutoQuery { get; set; }
public String GetSelectString(IRequest request)
{
String qString = "";
if (!request.QueryString["fields"].IsNullOrEmpty())
{
String sFields = request.QueryString["fields"].ToString();
String[] properties = sFields.Split(',');
foreach (String s in properties)
{
if (!s.Equals(properties.Last().ToString()))
{
qString += s + ",";
}
else
{
qString += s;
}
}
}
return qString;
}
}
}
我注意到除了我在?field={field1},{field2}…
中输入的有趣字段外,不需要的日期时间将按原样返回,所有int、GUID类型也将以0,0000-000000000-0000-00000的形式返回。如何摆脱它们?谢谢。一个Guid
(像一个整数)是一个值类型,每个值类型都必须有一个值,Guid的默认值类型是newguid()
,它是00000000-0000-0000-000000000000
如果不希望值类型发出值,则需要使用可为空的Guid?
。或者,您可以将ServiceStack文本序列化程序配置为不发出具有以下默认值的值类型:
JsConifg.ExcludeDefaultValues = true;
另一个选项是使用默认值自定义序列化,例如:
class Poco
{
public Guid Guid { get; set; }
public bool? ShouldSerialize(string fieldName)
{
return fieldName == "Guid" ? Guid != default(Guid) : true;
}
}