ServiceStack返回部分属性?

时间:2015-08-01 09:17:36

标签: servicestack query-string

我试图只返回部分属性而不是整体属性。显然这是一种GET方法。链接将是:

http://websitename/classname?parameter1=xyz&parameter2=abc

我可以获得parameter1,parameter2以及xyz,abc。 我想知道如何条件序列化json?我希望使用shouldSerialize方法,但不知道如何使用它?请赐教。感谢。

public Object Get(SalesOrderDetails request)
            {
                SalesOrderDataProcess sODP = new SalesOrderDataProcess(Db);
                SalesOrder salesOrderTemp = sODP.GetSalesOrderById(request.SalesOrderId);

                if (base.Request.QueryString.ToString().IsEmpty())
                    return salesOrderTemp;
                else
                {
                    JsonObject obj = JsonObject.Parse(salesOrderTemp.ToJson<SalesOrder>());
                    JsonObject obj1 = new JsonObject();

                    foreach (var entry in base.Request.QueryString)
                    {
                        var temp = base.Request.QueryString[entry.ToString()].ToString();
                        obj1.Add(entry.ToString(), (string)obj[entry.ToString()]);
                    }

                    return JsonSerializer.DeserializeFromString<Object>(obj1.ToJson());
                }
            }

对于初始实现,它正在运行但我想要一些改进代码的建议。

1 个答案:

答案 0 :(得分:2)

在ServiceStack.Text中的Conditional Serialization上查看此答案。

您的SalesOrder可以使用bool ShouldSerialize(fieldName)方法来指示应序列化哪些字段,例如:

public class SalesOrder
{
    HashSet<string> IncludeFields;

    public bool? ShouldSerialize(string fieldName)
    {
        return IncludeFields.Contains(fieldName);
    }
}