动态对象作为ServiceStack请求的响应

时间:2013-10-02 01:57:47

标签: servicestack

我运行一个测试,作为响应返回一个动态对象(ExpandoObject)。

它可以工作,但JsonServiceClient无法转换对象

并以json格式返回数据和类型描述。

我们能做得更好吗?

      public class DynamicAPIRequest : IReturn<object>
      { ...  }

      public object Post(DynamicAPIRequest request)
      {
        dynamic response = new ExpandoObject();  
        response.Name = "Donald Duck";         
        response.Nephews = new List<nephew>();
        response.Nephews.Add(new nephew { name = "Huey" } );
          ...
        return response;          
      }

在客户端

         var nephews = client.Post<object>(new DynamicAPIRequest { uncle = "skroutz" });   
             /* returns
              {Name:Donald Duck,Nephews:[{__type:Test.Client.Model.nephew, 
               Test.Client.Model,name:Huey},{name:Dewey},{name:Louie}]}

              */

我还能做什么?

1 个答案:

答案 0 :(得分:3)

要删除__type属性,您需要设置序列化配置以排除类型信息:

JsConfig.ExcludeTypeInfo = true;

来自this answer的神话:

  

默认情况下,只有在反序列化所需的时候才会发出__type,例如您的DTO包含接口,抽象类或后期绑定对象类型等。