낸시와 함께 유효한 Json이 포함된 문자열 반환
다른 서비스로부터 유효한 JSON이 포함된 문자열을 받았습니다.이 문자열을 Nancy와 함께 전송하고 싶은데 content-type을 "application/json"으로 설정하면 $.parseJ를 사용할 필요가 없어집니다.클라이언트측의 SON(데이터).
[응답]을 사용하는 경우)]Json으로서 문자열의 JSON을 망치고 이스케이프 문자를 추가합니다.스트링을 사용하여 스트림을 만들고 다음과 같은 응답 유형을 설정할 수 있습니다.
Response test = new Response();
test.ContentType = "application/json";
test.Contents = new MemoryStream(Encoding.UTF8.GetBytes(myJsonString));
더 간단한 방법이 있는지 알고 싶습니까?
낸시는 반응이 좋은 것 같아요.AsJson 확장 메서드:
Get["/providers"] = _ =>
{
var providers = this.interactiveDiagnostics
.AvailableDiagnostics
.Select(p => new { p.Name, p.Description, Type = p.GetType().Name, p.GetType().Namespace, Assembly = p.GetType().Assembly.GetName().Name })
.ToArray();
return Response.AsJson(providers);
};
코드 3줄을 사용해야 하기 때문에 더 좋은 방법이 있다고 생각하시는 것이 마음에 듭니다.그게 낸시에 대해 뭔가 말하고 있다고 생각합니다.
GetBytes 방법 중 하나를 선택할 수 있는 "더 나은" 방법을 찾을 수 없습니다.
Get["/"] = _ =>
{
var jsonBytes = Encoding.UTF8.GetBytes(myJsonString);
return new Response
{
ContentType = "application/json",
Contents = s => s.Write(jsonBytes, 0, jsonBytes.Length)
};
};
또는 "끈을 던지는" 방법:
Get["/"] = _ =>
{
var response = (Response)myJsonString;
response.ContentType = "application/json";
return response;
};
둘 다 같은 작업을 수행합니다.후자는 코드가 적고, 전자는 설명이 많은(imo) 것입니다.
이것도 동작합니다.
Response.AsText(myJsonString, "application/json");
거의 네가 하는 방식이야.할 수 있다
var response = (Response)myJsonString;
response.ContentType = "application/json";
IResponseFormatter에서 확장 메서드를 생성하여 자체 AsXXX 도우미를 제공할 수 있습니다.0.8 릴리즈에서는 응답 자체에 몇 가지 확장이 있으므로 WithHeader(..), WithStatusCode() 등의 작업을 수행할 수 있습니다.
모듈의 모든 루트가 JSON 문자열을 반환하는 경우 에서 콘텐츠유형을 설정할 수 있습니다.After
모든 루트를 동시에 후크합니다.
Get["/"] = _ =>
{
// ...
return myJsonString;
};
After += ctx =>
{
ctx.Response.ContentType = "application/json";
};
언급URL : https://stackoverflow.com/questions/7597035/returning-a-string-containing-valid-json-with-nancy
'programing' 카테고리의 다른 글
Wordpress에서 모든 게시물을 JSON으로 가져오기 (0) | 2023.03.23 |
---|---|
WordPress.com에서 호스팅되는 사이트에 REST API를 사용할 수 있습니까? (0) | 2023.03.23 |
SQL 쿼리: 관련된 두 테이블 간에 누락된 행을 찾습니다. (0) | 2023.03.23 |
회전 슬라이더 모바일 배경 이미지 변경 (0) | 2023.03.23 |
스프링 부트 devtools - IntelliJ에서는 정적 콘텐츠 새로고침이 작동하지 않습니다. (0) | 2023.03.23 |