【问题标题】:Converting simple value to JSON in ASP.NET Core API在 ASP.NET Core API 中将简单值转换为 JSON
【发布时间】:2018-10-02 21:05:45
【问题描述】:

有时我的 ASP.NET Core API 需要返回一个简单的值,即 boolintstring,尽管在大多数情况下,我将复杂的对象/数组返回为 JSON

我认为出于一致性目的,将简单的值返回为JSON 是一个好主意。将简单值(无论是bool 还是int)转换为JSON 的最简单方法是什么?

我的标准控制器操作如下所示——见下文——这使我能够返回状态代码以及数据。因此,我想坚持这种方法,而不是返回JsonResult

public async Task<IActionResult> Get()
{
   // Some logic
   return Ok(data);
}

我只是想找出将data 转换为JSON 的最简单方法,如果它还不是JSON 格式的话。

【问题讨论】:

标签: json asp.net-web-api asp.net-core


【解决方案1】:

查看您的代码,我假设您的应用程序应该是一个需要返回某种以 JSON 序列化的数据的服务。 好消息是 ASP.NET Core 已经包含一个数据序列化器,可以为您完成这项工作。 您可能需要根据自己的需要进行设置。

例如,假设以下数据类:

public class Data {

    public string Name { get; }
    public string Value { get; }
    public bool IsValid { get; }

    public Data(string name, string value, bool isValid) {
        Name = name;
        Value = value;
        IsValid = isValid;
    }

}

然后在你的Controller中使用以下方法:

public async Task<IActionResult> Get() {
    var data = new Data("sample name", "this is a value", true);
    return Ok(data);
}

会返回:

{
    "name": "sample name",
    "value": "this is a value",
    "isValid": true
}

即使认为标准序列化行为可能适合非常简单的实现,您可能需要更多地控制您的应用程序应如何序列化(和反序列化)不同数据类型,尤其是当这些数据类型与您想要的方式不完全匹配时将数据呈现给客户端。在这种情况下,您可能需要使用Custom Converters

您可以在设置 MVC 时在 ConfigureServices(IServiceCollection services) 方法中进行配置:

// Add framework services.
services.AddMvc().AddJsonOptions(jo => {

    // sample serialiser setup
    jo.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
    jo.SerializerSettings.DateTimeZoneHandling = DateTimeZoneHandling.Utc;
    jo.SerializerSettings.MissingMemberHandling = MissingMemberHandling.Error;

    // custom Converters
    jo.SerializerSettings.Converters.Add(new MyCustomConverter());

});

Here您可以阅读并了解有关如何设置和使用自定义转换器的更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-30
    • 2020-06-30
    • 2017-06-01
    • 2022-12-14
    • 2020-06-21
    • 1970-01-01
    • 1970-01-01
    • 2022-08-09
    相关资源
    最近更新 更多