微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

不了解如何将JSON.NET与ASP.NET Core WebAPI一起使用

我已经完成了我的第一个ASP.NET核心Web API,我想尝试通过 JSON.NET库手动序列化/反序列化JSON.在JSON.NET文档中,他们提供了以下简单的手动序列化示例:

public static string ToJson(this Person p)
{
    StringWriter sw = new StringWriter();
    JsonTextWriter writer = new JsonTextWriter(sw);

    writer.WriteStartObject();

    // "name" : "Jerry"
    writer.WritePropertyName("name");
    writer.WriteValue(p.Name);

    // "likes": ["Comedy","Superman"]
    writer.WritePropertyName("likes");
    writer.WriteStartArray();
    foreach (string like in p.Likes)
    {
        writer.WriteValue(like);
    }
    writer.WriteEndarray();

    writer.WriteEndobject();

    return sw.ToString();

}

像我这样的初学者缺少的是如何使用这个字符串.例如,请考虑以下事项:

[HttpGet("/api/data")
[Produces("application/json")]
public IActionResult GetData()
{
    return Ok(new Byte[SomeBigInt]);
}

在上面的代码中,我真的不知道ASP.NET Core将数组序列化为JSON …我假设它发生在某个地方.如果我手动序列化(使用JSON.NET示例)一些大的Byte数组,我该如何处理结果字符串?它只是“返回Ok(myJsonString);”?内置的序列化程序 – 不知道它已经是序列化操作的结果 – 不会再次序列化吗?

解决方法

由于Asp.Net Core非常灵活,因此有几种方法可以返回JSON.如果你想从控制器返回Json,最直接的方法之一就是这样:

[HttpGet("/api/data")]
 public JsonResult GetData() {

     return Json(new {
        fieldOnestring = "some value",fieldTwoInt= 2
     });

 }

使用JSON.NET在Controlleris上使用Json()辅助方法进行JSON序列化,然后将其作为响应主体发送.

你可以这样做:

string jsonText = JsonConvert.SerializeObject(new {
        fieldOnestring = "some value",fieldTwoInt= 2
     });

 Response.WriteAsync(jsonText);

注意:要使用Response.WriteAsync(jsonText),您需要使用Microsoft.AspNetCore.Http添加到您的文件,并具有对Microsoft.AspNetCore.Http.Abstractions的项目引用.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐