ASP.NET Core MVC 기본 JSON 파서에서 Jil(출력)로 변경
본 논문은 출력할 때만 교체하고 새로운 내용은 다음과 같다.NET Core 2.0의 기본 JSON 파서가 Jil로 대체됩니다.
본문에서 다루는 내용은 ASP이다.NET Core MVC에서는 출력 JSON 파서를 Jil(Nuget, Github)로 대체합니다.
공식 입출력 Json 해석 구현 소스를 열거합니다.
전체 설명:
때문에NET Core의 전면 해체로 이전 기록처럼 한 개
MediaTypeFormatter
만 계승하고 관련 방법을 실현하면 다 끝낼 수 없다.에 있습니다.NET Core에서 Http에서 요청한 Json 구문 분석은 입력 구문 분석 및 출력 구문 분석으로 구분됩니다.
주요 단계
1. 출력 Json 해상도 클래스 구축
TextOutputFormatter
2, Startup
에 새 출력 Json 해상도 등록하기 3, 모두 종료구체적 절차
1. Visual Studio Code에서 항목을 열고 내장된 터미널
dotnet
명령을 통해 Jil을 설치합니다.dotnet add package jil
본 논문에 설치된 버전은 2.15.0이다.
1.1 하나의
JilHelper
클래스를 하나의 예로 실현하면 주로 곳곳에서 서열화와 반서열화 방법을 편리하게 사용할 수 있다. 코드는 다음과 같다.//
using Jil;
using System.IO;
public class JilHelper
{
private Options _options;
private JilHelper()
{
_options = new Options(excludeNulls: true, includeInherited: true,
dateFormat: DateTimeFormat.MillisecondsSinceUnixEpoch,
serializationNameFormat: SerializationNameFormat.CamelCase);
}
public static readonly JilHelper Instance = new JilHelper();
public void Serialize(TextWriter writer, object data)
{
JSON.Serialize(data, writer, _options);
}
}
1.2 공식
MediaTypeHeaderValues
을 참고하여 자체 제작(이것을 사용하지 않고 코드에서 문자열을 MediaTypeHeaderValue
으로 변환하면 된다. 여기서 단독 제작의 목적은 주로 이후의 복용을 고려하는 것이다)//
using Microsoft.Net.Http.Headers;
internal class ContentTypeValues
{
public static readonly MediaTypeHeaderValue AppJson = MediaTypeHeaderValue.Parse("application/json").CopyAsReadOnly();
public static readonly MediaTypeHeaderValue TxtJson = MediaTypeHeaderValue.Parse("text/json").CopyAsReadOnly();
}
2. 프로젝트에서
JilOutFormatter
의 클래스를 새로 만들고 TextOutputFormatter
에서 계승한다. 다음과 같다.//
using Microsoft.AspNetCore.Mvc.Formatters;
using System;
using System.Text;
using System.Threading.Tasks;
public class JilOutFormatter : TextOutputFormatter
{
//
public JilOutFormatter()
{
SupportedEncodings.Add(Encoding.UTF8);
SupportedEncodings.Add(Encoding.Unicode);
SupportedMediaTypes.Add(ContentTypeValues.AppJson);
SupportedMediaTypes.Add(ContentTypeValues.TxtJson);
}
//
public override async Task WriteResponseBodyAsync(OutputFormatterWriteContext context, Encoding encoding)
{
if (context == null)
{
throw new ArgumentNullException(nameof(context));
}
if (encoding == null)
{
encoding = Encoding.UTF8;
}
var response = context.HttpContext.Response;
using (var writer = context.WriterFactory(response.Body, encoding))
{
JilHelper.Instance.Serialize(writer, context.Object);
await writer.FlushAsync();
}
}
}
3.
Startup
에서 ConfigureServices(IServiceCollection services)
이 방법을 찾으면 다음과 같이 수정한다.public void ConfigureServices(IServiceCollection services)
{
// AddMvc AddMvcCore Json
services.AddMvcCore(opts => { opts.OutputFormatters.Add(new JilOutFormatter()); });
services.AddMvc();
}
4. 이로써 출력된 Json 해석은 Jil의 대체로 모두 끝났다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.