JSon 직렬 화 와 반 직렬 화 를 바탕 으로 통용 되 는 패키지 전체 코드

1.최근 프로젝트 가 시작 되 었 습 니 다.며칠 동안 여 유 를 가지 고 JSON 의 직렬 화 와 반 직렬 화 를 다시 포장 하고 싶 습 니 다.본인 은 JSONHElp 라 고 정의 합 니 다.Microsoft 는 이미 잘 하고 있 지만.하지만 제 가 개발 한 프로젝트 를 패키지 로 사용 하고 싶 습 니 다.후기의 확장 및 개발 사용 에 편리 합 니 다.
2.JSON 이란 무엇 인가?
 JSON:JavaScript 대상 표현법(JavaScript Object Notation).JSON 은 텍스트 정 보 를 저장 하고 교환 하 는 문법 이다.XML 과 유사 하 다.JSON 은 XML 보다 작고 빠 르 며 해석 하기 쉽다.  현재 웹 애플 리 케 이 션 JSON 을 개발 하 는 것 은 필수 적 이다.JSON 은 경량급 텍스트 데이터 교환 격 으로 JSON 은 언어 에 독립 되 어 있 으 며 JSON 은 자기 서술 성 을 가지 고 이해 하기 쉽다.  ,JSON 은 자 바스 크 립 트 문법 으로 데이터 대상 을 묘사 하지만 JSON 은 여전히 언어 와 플랫폼 에 독립 되 어 있다.JSON 해상도 기와 JSON 라 이브 러 리 는 다양한 프로 그래 밍 언어 를 지원 합 니 다. 
3.JSON-JavaScript 대상 으로 변환
JSON 텍스트 형식 은 문법 적 으로 자 바스 크 립 트 대상 을 만 드 는 코드 와 같 습 니 다.이러한 유사 성 때문에 해석 기 가 필요 없 이 자 바스 크 립 트 프로그램 은 내 장 된 eval()함 수 를 사용 하여 JSON 데이터 로 원생 자 바스 크 립 트 대상 을 생 성 할 수 있 습 니 다.
4.XML 유사
JSON 은 순문 이에 요.  JSON 은 자기 기술 의 특성 을 가지 고 있 으 며 JSON 은 계층 구조(값 에 존재 하 는 값)를 가지 고 있 습 니 다.JSON 은 JavaScript 를 통 해 분석 할 수 있 습 니 다.  JSON 데 이 터 는 AJAX 로 전송 할 수 있 습 니 다.    XML 의 차이 점 이 끝나 지 않 은 탭 보다 읽 기와 쓰기 속도 가 빠 르 고 내 장 된 자바 스 크 립 트 eval()방법 으로 해석 할 수 있 으 며 배열 을 사용 할 수 있 습 니 다.  ,보존 자 사용 안 함
5.왜 JSON 을 사용 하나 요?
AJAX 응용 프로그램 에 있어 JSON 은 XML 보다 빠 르 고 사용 하기 쉽 습 니 다.XML 로 XML 문 서 를 읽 고 XML DOM 으로 문 서 를 반복 합 니 다.  값 을 읽 고 변수 에 저장 합 니 다.
6.JSON 사용
   JSON 문자열 읽 기   JSON 문자열 을 eval()로 처리 합 니 다.  전단 JS 인터페이스 는 보통 사용 합 니 다.JSON.parse()   대상 이나 배열 문자열 을 정렬 하여 JSON 을 진행 합 니 다.  대상 및 JSON.stringify() 
7.JSON 의 서열 화 및 반 서열 화
JSON 의 서열 화 와 반 서열 화   저 는 using Newtonsoft.JSon 의 JSonConvert.SerializeObject()를 사용 합 니 다.  using System.Runtime.Serialization.JSon;  그 중의 Jil.JSON.Serialize()   
물론 이 두 가지 서열 화 방식 은 같다.하지만 Jil.JSON.Serialize()   직렬 화 효율 은 확실히 이 Json Convert.SerializeObject()보다 훨씬 높다.대량의 데이터 가 서열 화 될 때 분명히 알 수 있다.그래서.
직렬 화 및 반 직렬 화 데이터 양 이 매우 많 고 많 을 때 Jil.JSON.Serialize()를 사용 하여 직렬 화 대상 과 반 직렬 화 대상 등 을 강력 히 제안 합 니 다.
9.JSONHelp.cs  코드 는 다음 과 같 습 니 다:

using Newtonsoft.Json;
using System;
using System.IO;
using System.Runtime.Serialization.Json;
using System.Text;
/************************************************
  : LowKeyTranscend
  :        JSON         
   :V1.0
    :2017 6 22     
*****************************************************/
namespace RapidDevelopmentFramework.Common
{
  /// <summary>
  /// JSON   
  /// </summary>
  public static class JSONHelper
  {
    /// <summary>
    /// JSON         
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="_Object"></param>
    /// <returns></returns>
    public static String ObjectToJSON<T>(this T _Object) where T :class
    {
      return JsonConvert.SerializeObject(_Object);
    }
    /// <summary>
    /// JSON         
    /// </summary>
    /// <param name="_Object"></param>
    /// <returns></returns>
    public static String ObjectToJSON(this Object _Object)
    {
      return JsonConvert.SerializeObject(_Object);
    }
    /// <summary>
    /// JSON         
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="_Object"></param>
    /// <returns></returns>
    public static String ObjectToJSONOfficial<T>(this T _Object) where T :class
    {
      using (var TempMemoryStream = new MemoryStream())
      {
        var MyDataContractJsonSerializer = new DataContractJsonSerializer(typeof(T));
        MyDataContractJsonSerializer.WriteObject(TempMemoryStream, _Object);
        var MySerializationString = Encoding.UTF8.GetString(TempMemoryStream.ToArray());
        return MySerializationString;
      }
    }
    /// <summary>
    ///JSON     Jil   
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="_Object"></param>
    /// <returns></returns>
    public static String ObjectToJSONJil<T>(this T _Object) where T :class
    {
      return Jil.JSON.Serialize(_Object, Jil.Options.ExcludeNullsIncludeInherited);
    }
    /// <summary>
    /// JSON     Jil       null 
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="_Object"></param>
    /// <returns></returns>
    public static String ObjectToJSONJilIncludeNulls<T>(this T _Object) where T:class
    {
      return Jil.JSON.Serialize(_Object, Jil.Options.IncludeInherited);
    }
    /// <summary>
    /// JSON      
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="_JSONString"></param>
    /// <returns></returns>
    public static T JSONToObjectJSON<T>(this String _JSONString) where T:class
    {
      return JsonConvert.DeserializeObject<T>(_JSONString);
    }
    /// <summary>
    /// JSON          
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="_JSONString"></param>
    /// <returns></returns>
    public static T JSONToObjectOfficial<T>(this String _JSONString) where T :class
    {
      using (var TempMemoryStream = new MemoryStream(Encoding.UTF8.GetBytes(_JSONString)))
      {
        var MyDataContractJsonSerializer = new DataContractJsonSerializer(typeof(T));
        return (T)MyDataContractJsonSerializer.ReadObject(TempMemoryStream);
      }
    }
    /// <summary>
    /// JSON             
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="_JSONString"></param>
    /// <returns></returns>
    public static T JSONToObjectJil<T>(this String _JSONString) where T :class
    {
      using (var InputString = new StringReader(_JSONString))
      {
        var ObjectResult = Jil.JSON.Deserialize<T>(InputString);
        return ObjectResult;
      }
    }
    /// <summary>
    /// JSON       Jil          null 
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="_JSONString"></param>
    /// <returns></returns>
    public static T JSONToObjectJilIncludeNulls<T>(this String _JSONString) where T :class
    {
      using (var InputString = new StringReader(_JSONString))
      {
        var ObjectResult = Jil.JSON.Deserialize<T>(InputString, Jil.Options.IncludeInherited);
        return ObjectResult;
      }
    }
  }
}
위 에서 말 한 것 은 소 편 이 여러분 에 게 소개 한 JSon 직렬 화 와 반 직렬 화 를 바탕 으로 통용 되 는 패키지 전체 코드 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.소 편 은 제때에 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기