在 ASP.net Core 中将对象转换为 Json

Posted

技术标签:

【中文标题】在 ASP.net Core 中将对象转换为 Json【英文标题】:Convert an object to Json in ASP.net Core 【发布时间】:2020-06-30 03:06:34 【问题描述】:

我正在尝试将“Persona”转换为 .net Framework 4 中的 json 字符串并将其作为对象,我需要帮助。

我已经尝试过了(使用 System.Text.Json)

public HttpResponseMessage Get(int id)
  HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
    Personas persona = context.tPersonas.FirstOrDefault(p => p.idPersona == id);
    if (persona != null)
      var jsonData = JsonSerializer.Serialize(persona);
      response.Content = new StringContent(jsonData);
      response.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
      return response;
    
  else
    return response = new HttpResponseMessage(HttpStatusCode.BadRequest);            
 

还有这个(使用 Newtonsoft.Json);

 public HttpResponseMessage Get(int id)
        
            HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
            Personas persona = context.tPersonas.FirstOrDefault(p => p.idPersona == id);
            if (persona != null)
            
                response.Content = new StringContent(JsonConvert.SerializeObject(persona));
                response.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
                return response;
            
            else
                return response = new HttpResponseMessage(HttpStatusCode.BadRequest);            
        

调试时,“persona”有数据,“Serialize”显示为null。

我也尝试了“Request.CreateResponse”,但由于某些奇怪的原因它未被识别为有效代码。

我跳过了哪一步?

【问题讨论】:

与 Newtonsoft 一起工作。你的问题不存在 var persona = new Name = "name", LastName = "lastname" ; var st = JsonConvert.SerializeObject(persona); st 变量以 null 结尾,不知道为什么。想法? 清理你的解决方案,构建并重新运行它,我亲自测试过它并且它可以工作 谢谢先生!它像你说的那样工作。您是否知道如何在请求成功的情况下发送该 JSON 并在失败的情况下发送错误? 【参考方案1】:

如果想在asp.core mvc中使用HttpResponseMessage返回信息,需要完成以下步骤。

安装Microsoft.AspNetCore.Mvc.WebApiCompatShim 包为你 项目。 将services.AddMvc().AddWebApiConventions(); 添加到starup.cs 文件中的ConfigureServices。

代码如下:

    public HttpResponseMessage Get(int id)
    
        HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
        Personas persona = _context.tPersonas.FirstOrDefault(p => p.idPersona == id);
        if (persona != null)
        
            response.Content = new StringContent(JsonConvert.SerializeObject(persona));
            response.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
            return response;
        
        else
        
            response = new HttpResponseMessage(HttpStatusCode.BadRequest);
            response.Content = new StringContent("error message");
            return response;
        

     

您也可以参考this。

这是来自邮递员的调试过程:

【讨论】:

非常感谢先生!这就是我要找的:)

以上是关于在 ASP.net Core 中将对象转换为 Json的主要内容,如果未能解决你的问题,请参考以下文章

Google Chart和Chart.Js,在Asp .NET Core 2.2中将脚本端发送C#变量

在 ASP.NET Core 中将 html 导出为 pdf

在 ASP.NET Core 中将 Razor 视图渲染为字符串

如何在 ASP .NET Core 2.1 中将登录页面设为默认路由?

如何在 ASP.NET CORE 5.0 MVC 中将登录设置为默认路由

ASP.NET Core 中的对象映射之 AutoMapper