La forma estándar de AFAIK para devolver los datos en ASP.NET Core Api Web es mediante el uso de IActionResult y proporcionando, por ejemplo, un OkObject resultado. Esto funciona bien con los objetos, pero lo que si he obtenido una cadena JSON, de alguna manera, y yo sólo quiero regresar que JSON de nuevo a la persona que llama?

por ejemplo,

public IActionResult GetSomeJSON()
{
    return Ok("{ \"name\":\"John\", \"age\":31, \"city\":\"New York\" }");
}

Lo ASP.NET Core es que aquí, toma la Cadena JSON, y los envuelve en JSON de nuevo (por ejemplo, que se escapa del JSON)

De regresar de texto sin formato con [Produces("text/plain")] hace el trabajo por la prestación de la «prima» de contenido, pero también establece el tipo de contenido de la respuesta a la LLANURA en lugar de JSON. Utilizamos [Produces("application/json")] en nuestros Controladores.

¿Cómo puedo devolver el JSON que tengo como normal JSON tipo de contenido, sin que se escapó?

Nota: no importa cómo la cadena JSON fue adquirida, podría ser de un servicio de 3 ª parte, o hay algunos especiales de serialización necesidades, por lo que queremos hacer la serialización personalizada en lugar de utilizar el valor predeterminado JSON.NET serializador.

  • json enviado como el cuerpo o una param?
  • JSON enviado como el valor de retorno (cuerpo), así que no hay parámetros involucrados.
InformationsquelleAutor MichelZ | 2018-01-19

2 Comentarios

  1. 39

    Y por supuesto un par de minutos después de la publicación de la pregunta que se tropiezan con una solución 🙂

    Acabo de volver de Content con el tipo de contenido application/json

    return Content("{ \"name\":\"John\", \"age\":31, \"city\":\"New York\" }", "application/json");
    • Mejor aún para volver Json(su json va aquí) como por docs.microsoft.com/en-us/aspnet/core/web-api/advanced/…
    • Esto fue muy útil, gracias! (Si vuelvo a Json como por el comentario de arriba, a continuación, se devuelve fragmentada de la que mi cliente no puede usar.) La solución de la devolución de Contenido con una especificación de application/json es lo que resolvió mi problema.
    • ¿Cómo hacer esto para DotNetCore 2.1 ? El «Contenido» es un método que no se reconocía así que creo que han cambiado algo desde entonces.
    • Usted necesita ASPNetCore 2.1. NetCore2.1 no es suficiente. Content es una función de Microsoft.AspNetCore.Mvc.ControllerBase
  2. 17

    En su acción, reemplazar Ok() con el Content() método, que permite establecer el contenido (contenido en bruto), tipo de contenido y el código de estado de su respuesta: https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.mvc.contentresult?view=aspnetcore-2.0

    • Esto es genial. Tengo la sensación de que esto ha cambiado entre ASP.NET Core 2 y ASP.NET Núcleo 1.
    • otro día de arrancarse el cabello, aquí también. Me encantaría ver a una solución de trabajo para DNCore 2.1!
    • Usted necesita ASPNetCore 2.1. NetCore2.1 no es suficiente. Content es una función de Microsoft.AspNetCore.Mvc.ControllerBase

Dejar respuesta

Please enter your comment!
Please enter your name here