1

我运行一个测试,返回一个动态对象(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}]}

              */

我还能做什么?

4

1 回答 1

3

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

JsConfig.ExcludeTypeInfo = true;

这个答案中的神话:

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

于 2013-10-02T12:42:16.660 回答