programing

낸시와 함께 유효한 Json이 포함된 문자열 반환

skycolor 2023. 3. 23. 22:33
반응형

낸시와 함께 유효한 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

반응형