0

I'm trying to return only partial properties instead of the whole. Obviously it is a GET method. The link would be like:

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

and I can get either parameter1,parameter2 as well as xyz,abc. I am wondering how to conditional serialize the json? I am looking to use shouldSerialize method but not sure how to use it? Please enlighten me. Thanks.

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());
                }
            }

For initial implementation, it is working but I would like some advice to improve the code.

Isley
  • 197
  • 15

1 Answers1

2

See this answer on Conditional Serialization in ServiceStack.Text.

Your SalesOrder could have a bool ShouldSerialize(fieldName) method to indicate which fields should be serialized, e.g:

public class SalesOrder
{
    HashSet<string> IncludeFields;

    public bool? ShouldSerialize(string fieldName)
    {
        return IncludeFields.Contains(fieldName);
    }
}
Community
  • 1
  • 1
mythz
  • 141,670
  • 29
  • 246
  • 390