2017-11-15 8 views
2

JSON (newtonsoft 사용)을 반환해야하는 .NET 코어 2.0 웹 API 프로젝트에서 POST 메서드가 있습니다. 당신이 볼 수 있듯이웹 API가 이스케이프 처리 된 JSON을 반환합니다.

"{\"name\":\"test\",\"value\":\"test\"}" 

에서, JSON은 여전히 ​​우체부에 이스케이프 :

ObjectResult objRes = new ObjectResult(JsonConvert.SerializeObject(result, settings)); 
objRes.ContentTypes.Add(new MediaTypeHeaderValue("application/json")); 
return objRes 

나는이 사용하는 우편 배달을 테스트 할 때 나는 같은 결과를 얻을 : 나는 방법의 끝에 다음 코드를 . 나는 .NET 코어 1.0 프로젝트에서 동일한 코드를 테스트 할 때, 나는 우체부에서 다음을 얻을 :

{ 
    "name": "test", 
    "value": "test" 
} 

은 어떻게 .NET 코어 2.0 프로젝트에서 동일한 결과를 얻을 수 있나요? Newtonsoft 때문일 수 있다고 생각했지만 문자열로 비 직렬화를 디버깅 할 때 디버거는 .NET 코어 1.0 및 2.0 프로젝트에서 정확히 동일한 (이스케이프 된) 값을 표시합니다.

+0

[아마도 관련됨] (https://stackoverflow.com/a/42214435/4137916) (동일한 프레임 워크가 아니지만 같은 줄에있을 수 있습니다). –

+0

[.NET Core 2.0으로 마이그레이션 된 웹 서비스와 json을 반환하는] 가능한 복제본 (https://stackoverflow.com/questions/46785619/migrated-web-service-to-net-core-2-0-and-returning- json) – MichelZ

답변

3

컨트롤러에서 결과를 반환 할 수 있으며 프레임 워크에서 직렬화됩니다.

[HttpPost] 
public object Post() 
{ 
    var result = new MyObject { Name = "test", Value = "test" }; 
    return result; 
} 

또는 당신은 할 수 있습니다 :

return new OkObjectResult(result); 

을 아니면 컨트롤러에서 상속하는 경우 :

return Ok(result); 
+0

그렇습니다. 그러나 JSON.NET에는 .NET 직렬 변환기에 비해 몇 가지 장점이 있으므로 JSON.NET에서 작동하도록하려면 stackoverflow.com/a/48335234/1317161 솔루션을 참조하십시오. – MichelZ

5

당신이 그것을 보내기 전에 개체를 직렬화 할 필요가 있다고 생각하지 않습니다. .NET Core에서는 기본적으로 직렬화됩니다.

+0

예, JSON.NET은 않습니다. .NET serializer에 비해 몇 가지 이점이 있으므로 https://stackoverflow.com/a/48335234/1317161 솔루션을 참조하여 JSON.NET과 작동하게하십시오. – MichelZ