【问题标题】:Return Default jSon Data With Property返回具有属性的默认 json 数据
【发布时间】:2021-11-18 08:30:39
【问题描述】:

我正在将数据库中的数据转换为 jSon,如下所示,ASP.NET Web Api:

public string GetData(string userId)
{
    var settings = new JsonSerializerSettings
    {
        ContractResolver = new DefaultContractResolver()
    };

    string Query = "select USER_ID UserId, USER_NAME UserName from Table where USER_ID = '" + userId + "'";
    DataTable dt = SelectData(Query);

    string jSonResult;
    jSonResult = JsonConvert.SerializeObject(dt, settings);

    return jSonResult;
}

在项目的 web api 配置文件中,有如下设置:

public static void Register(HttpConfiguration config)
{
     EnableCorsAttribute cors = new EnableCorsAttribute("*", "*", "GET, POST");
      config.EnableCors(cors);

     //Web api routes
      config.MapHttpAttributeRoutes();
      
     config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
     );

     GlobalConfiguration.Configuration.Formatters.Clear();
     GlobalConfiguration.Configuration.Formatters.Add(new System.Net.Http.Formatting.JsonMediaTypeFormatter());

}

它返回了我预期的 jSon 数据,但问题是返回的属性数据变成了大写,如下所示:

[
  {
    "USERID": "1002",
    "USERNAME": "John"
   
  }
]

虽然我使用格式化程序将其保持默认,但它返回上述内容。任何方式我都可以返回如下属性:

[
  {
    "UserId": "1002",
    "UserName": "John"
  }
]

【问题讨论】:

    标签: c# json asp.net-web-api


    【解决方案1】:

    JsonSerializerSettings 中替换ContractResolver = new DefaultContractResolver() 进入 ContractResolver = new CamelCasePropertyNamesContractResolver()

    例如

    var settings = new JsonSerializerSettings
        {
            ContractResolver = new CamelCasePropertyNamesContractResolver()
        };
    

    【讨论】:

    • 像这样dt.Columns.Add("UserID", typeof(int)); dt.Columns.Add("UserName", typeof(string));将列名添加到数据表中
    • 它工作了,但我后来不得不做一些改变。非常感谢。
    【解决方案2】:
     public static string GetData(string userId)
            {
    
                 
    
                DataTable dt = new DataTable();
                dt.Columns.Add("UserID", typeof(int));
                dt.Columns.Add("UserName", typeof(string));
                
                //Some dummy data
                dt.Rows.Add(1, "Townsend");
                dt.Rows.Add(2, "Marget");
                dt.Rows.Add(3, "Deva");
                dt.Rows.Add(4, "Aurthur");
    
                
                 
                var settings = new JsonSerializerSettings
                {
                    ContractResolver = new DefaultContractResolver()
                    
                };
    
    
                string jSonResult;
                jSonResult = JsonConvert.SerializeObject(dt);
    
    
                return jSonResult;
    
    
            }
    

    会返回如下结果

    [
      {
        "UserID": 1,
        "UserName": "Townsend"
      },
      {
        "UserID": 2,
        "UserName": "Marget"
      },
      {
        "UserID": 3,
        "UserName": "Deva"
      },
      {
        "UserID": 4,
        "UserName": "Aurthur"
      }
    ]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-08
      • 1970-01-01
      • 1970-01-01
      • 2012-01-08
      • 1970-01-01
      • 2013-02-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多