【问题标题】:ServiceStack returns partial properties?ServiceStack 返回部分属性?
【发布时间】:2015-08-02 09:43:56
【问题描述】:

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

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

我可以得到parameter1,parameter2xyz,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());
                }
            }

对于初始实施,它正在工作,但我想要一些改进代码的建议。

【问题讨论】:

    标签: servicestack query-string


    【解决方案1】:

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

    你的SalesOrder 可以有一个bool ShouldSerialize(fieldName) 方法来指示哪些字段应该被序列化,例如:

    public class SalesOrder
    {
        HashSet<string> IncludeFields;
    
        public bool? ShouldSerialize(string fieldName)
        {
            return IncludeFields.Contains(fieldName);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-07-01
      • 2018-07-13
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-26
      相关资源
      最近更新 更多