【问题标题】:C# JSON Custom Result List NameC# JSON 自定义结果列表名称
【发布时间】:2017-06-07 09:59:19
【问题描述】:

如何将 C# 的 JSON 响应从 Results 覆盖到类名?

它总是返回方法名+结果。有没有办法让我把它改成类名?

或者我的代码做错了什么?

这是我的 Exchange_Reason 课程

[DataContract]
public class Exchange_Reason
{
    [DataMember]
    public string Exchange_Reason_ID { get; set; }

    [DataMember]
    public string Reason { get; set; }

    [DataMember]
    public string Status { get; set; }
}

我的服务合同

[OperationContract]
    [WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "getExchange_Reason_List")]
    List<Exchange_Reason> GetExchange_Reason_List();

实现

public List<Exchange_Reason> GetExchange_Reason_List()
{
     List<Exchange_Reason> results = new List<Exchange_Reason>();
     ...
     while (reader.Read())
     {
           results.Add(new Exchange_Reason()
           {
                 Exchange_Reason_ID = reader["Exchange_Reason_ID"].ToString(),
                 Reason = reader["Reason"].ToString(),
                 Status = reader["Status"].ToString()
           });
     }
     return results;
}

结果

{
    GetExchange_Reason_ListResult: [
        {
            Exchange_Reason_ID: "1000001",
            Reason: "Rotten",
            Status: "Active"
        },
        {
            Exchange_Reason_ID: "1000002",
            Reason: "Expired",
            Status: "Active"
        }
    ]
}

我需要它:

{
    Exchange_Reasons: [
        {
            Exchange_Reason_ID: "1000001",
            Reason: "Rotten",
            Status: "Active"
        },
        {
            Exchange_Reason_ID: "1000002",
            Reason: "Expired",
            Status: "Active"
        }
    ]
}

提前致谢。

【问题讨论】:

    标签: c# json wcf


    【解决方案1】:

    那是因为你的 BodyStyle 被包装了。首先从您的WebInvoke 中删除BodyStyle,然后以您想要的方式包装您的输出。我假设你想要这个:

     [DataContract]
    public class GetExchange_Reason_ListResult
    {
        [DataMember]
        public Exchange_Reason[] Exchange_Reasons { get; set; }
    }
    
    public class Exchange_Reason
    {
        public string Exchange_Reason_ID { get; set; }
        public string Reason { get; set; }
        public string Status { get; set; }
    }
    

    你的方法应该是这样的:

    [OperationContract]
    [WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, UriTemplate = "getExchange_Reason_List")]
    GetExchange_Reason_ListResult GetExchange_Reason_List();
    

    【讨论】:

      猜你喜欢
      • 2012-01-27
      • 1970-01-01
      • 2021-12-09
      • 2021-11-28
      • 2012-08-23
      • 2016-03-16
      • 1970-01-01
      • 2011-03-17
      • 2011-11-13
      相关资源
      最近更新 更多