【问题标题】:Dynamic object as response for ServiceStack request作为对 ServiceStack 请求的响应的动态对象
【发布时间】:2023-03-16 02:49:01
【问题描述】:

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

              */

我还能做什么?

【问题讨论】:

    标签: servicestack


    【解决方案1】:

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

    JsConfig.ExcludeTypeInfo = true;
    

    来自this answer的mythz:

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

    【讨论】:

    • Mike 感谢它的工作,不包括类型信息。我还有另一个问题,如何将 json 反序列化为 var 类型(我在 v4 -net.4 中测试了 DynamicJson.Deserialize 但没有结果)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-16
    相关资源
    最近更新 更多