我已经完成了我的第一个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的项目引用.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。