웹 프론트엔드 JS 튜토리얼 Json의 직렬화 및 역직렬화를 구현하는 방법(코드 포함)

Json의 직렬화 및 역직렬화를 구현하는 방법(코드 포함)

Apr 25, 2018 pm 03:24 PM
javascript json 직렬화

이번에는 Json 직렬화 및 역직렬화를 구현하는 방법(코드 포함)을 보여드리겠습니다. Json이 직렬화 및 역직렬화를 구현하는 데 있어 주의 사항은 무엇인가요? 다음은 실제 사례를 살펴보겠습니다.

JSON이란 무엇인가요?

JSON(JavaScript Object Notation)은 사람이 읽고 쓰기 쉽고 기계가 구문 분석하고 생성하기 쉬운 경량 데이터 교환 형식입니다.

번역: Json [javascript object 표현 방법]은 가벼운 데이터 교환 형식으로 쉽게 읽고 쓸 수 있으며 컴퓨터로 쉽게 변환하고 생성할 수 있으며 언어와 완전히 독립적입니다.

Json은 다음 두 가지 데이터 구조를 지원합니다.

  1. 키-값 쌍의 컬렉션 - 다양한 프로그래밍 언어가 이 데이터 구조를 지원합니다.

  2. 값의 컬렉션입니다. 여기에는 배열, 세트, ​​벡터 또는 시퀀스 등이 포함됩니다.

Json에는 다음과 같은 표현식이 있습니다

1. Object

A "키/값" 순서가 없으며, 객체는 중괄호 "{"로 시작하고 중괄호 "} "로 끝납니다. 각 "키" 뒤에는 콜론이 있으며 쉼표는 여러 키-값 쌍을 구분하는 데 사용됩니다.

예:

  var user = {"name":"Manas","gender":"Male","birthday":"1987-8-8"}
로그인 후 복사

2. 배열

값의 순서를 설정합니다. 배열은 대괄호 "["로 시작하고 대괄호 "]"로 끝나며, 모든 값은 쉼표로 구분됩니다. 예:

var userlist = [{"user":{"name":"Manas","gender":"Male","birthday":"1987-8-8"}}, 
{"user":{"name":"Mohapatra","Male":"Female","birthday":"1987-7-7"}}]
로그인 후 복사

3. String

따옴표로 표시되고 백슬래시로 구분된 임의 개수의 유니코드 문자입니다.

예:

var userlist = "{\"ID\":1,\"Name\":\"Manas\",\"Address\":\"India\"}"
로그인 후 복사

좋습니다. JSON을 소개한 후 본론으로 들어가겠습니다.

직렬화 및 역직렬화에는 세 가지 방법이 있습니다.

    JavaScriptSerializer 클래스 사용
  1. JavaScriptSerializer

  2. 使用DataContractJsonSerializer

  3. 使用JSON.NET类库

我们先来看看使用 DataContractJsonSerializer的情况

DataContractJsonSerializer类帮助我们序列化和反序列化Json,他在程序集 System.Runtime.Serialization.dll下的System.Runtime.Serialization.Json命名空间里。

首先,这里,我新建一个控制台的程序,新建一个类Student

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.Serialization;
namespace JsonSerializerAndDeSerializer
{
 [DataContract]
 public class Student
 {
  [DataMember]
  public int ID { get; set; }
  [DataMember]
  public string Name { get; set; }
  [DataMember]
  public int Age { get; set; }
  [DataMember]
  public string Sex { get; set; }
 }
}
로그인 후 복사

注意:上面的Student实体中的契约 [DataMember],[DataContract],是使用DataContractJsonSerializer

DataContractJsonSerializer 클래스 사용

사용 JSON .NET 클래스 라이브러리

먼저 DataContractJsonSerializer 사용을 살펴보겠습니다.

DataContractJsonSerializer 클래스는 Json 어셈블리에 있습니다. .Runtime.Serialization.dll 아래의 code>System.Runtime.Serialization.Json네임스페이스 . 우선 여기서는 새 콘솔 프로그램을 만들고 새 클래스 Student를 만듭니다

//----------------------------------------------------------------------------------------------
//使用DataContractJsonSerializer方式需要引入的命名空间,在System.Runtime.Serialization.dll.中
using System.Runtime.Serialization.Json;
//--------------------------------------------------------------------------------------------
로그인 후 복사

참고:

Student 엔터티의 [DataMember] 계약 위의 경우 DataContractJsonSerializer를 사용한 직렬화 및 역직렬화에는 [DataContract]가 필요합니다. 다른 두 메서드에는 추가할 필요가 없으며 괜찮습니다.

프로그램 코드: 🎜🎜🎜 먼저 어셈블리를 참조해야 합니다. 🎜
#region 1.DataContractJsonSerializer方式序列化和反序列化
   Student stu = new Student()
    {
     ID = 1,
     Name = "曹操",
     Sex = "男",
     Age = 1000
    };
   //序列化
   DataContractJsonSerializer js = new DataContractJsonSerializer(typeof(Student));
   MemoryStream msObj = new MemoryStream();
   //将序列化之后的Json格式数据写入流中
   js.WriteObject(msObj, stu);
   msObj.Position = 0;
   //从0这个位置开始读取流中的数据
   StreamReader sr = new StreamReader(msObj, Encoding.UTF8);
   string json = sr.ReadToEnd();
   sr.Close();
   msObj.Close();
   Console.WriteLine(json);
   //反序列化
   string toDes = json;
   //string to = "{\"ID\":\"1\",\"Name\":\"曹操\",\"Sex\":\"男\",\"Age\":\"1230\"}";
   using (var ms = new MemoryStream(Encoding.Unicode.GetBytes(toDes)))
   {
    DataContractJsonSerializer deseralizer = new DataContractJsonSerializer(typeof(Student));
    Student model = (Student)deseralizer.ReadObject(ms);// //反序列化ReadObject
    Console.WriteLine("ID=" + model.ID);
    Console.WriteLine("Name=" + model.Name);
    Console.WriteLine("Age=" + model.Age);
    Console.WriteLine("Sex=" + model.Sex);
   }
   Console.ReadKey(); 
   #endregion
로그인 후 복사
//-----------------------------------------------------------------------------------------
//使用JavaScriptSerializer方式需要引入的命名空间,这个在程序集System.Web.Extensions.dll.中
using System.Web.Script.Serialization;
//----------------------------------------------------------------------------------------
로그인 후 복사
로그인 후 복사
🎜🎜 네임스페이스를 도입한 후 결과는 다음과 같습니다. 🎜🎜🎜🎜 🎜🎜🎜🎜 🎜JavaScript 사용🎜을 살펴보겠습니다. JsonSerializer: 🎜🎜🎜🎜JavaScriptSerializer는 JSON을 직렬화 및 역직렬화하는 데 도움이 되는 클래스입니다. 이는 System.Web.Extensions.dll 어셈블리에서 사용할 수 있는 네임스페이스 System.Web.Script.Serialization에 있습니다. JSON 문자열은 Serialize 메서드를 사용합니다. Deserialize 또는 DeserializeObject 메서드를 사용하여 JSON 문자열을 역직렬화하는 것이 가능합니다. JavaScriptSerializer를 사용하여 직렬화 및 역직렬화를 구현하는 방법을 살펴보겠습니다.🎜🎜🎜여기에서 먼저 인용하세요🎜🎜
//-----------------------------------------------------------------------------------------
//使用JavaScriptSerializer方式需要引入的命名空间,这个在程序集System.Web.Extensions.dll.中
using System.Web.Script.Serialization;
//----------------------------------------------------------------------------------------
로그인 후 복사
로그인 후 복사
#region 2.JavaScriptSerializer方式实现序列化和反序列化
   Student stu = new Student()
    {
     ID = 1,
     Name = "关羽",
     Age = 2000,
     Sex = "男"
    };
   JavaScriptSerializer js = new JavaScriptSerializer();
   string jsonData = js.Serialize(stu);//序列化
   Console.WriteLine(jsonData);
   ////反序列化方式一:
   string desJson = jsonData;
   //Student model = js.Deserialize<Student>(desJson);// //反序列化
   //string message = string.Format("ID={0},Name={1},Age={2},Sex={3}", model.ID, model.Name, model.Age, model.Sex);
   //Console.WriteLine(message);
   //Console.ReadKey(); 
   ////反序列化方式2
   dynamic modelDy = js.Deserialize<dynamic>(desJson); //反序列化
   string messageDy = string.Format("动态的反序列化,ID={0},Name={1},Age={2},Sex={3}",
    modelDy["ID"], modelDy["Name"], modelDy["Age"], modelDy["Sex"]);//这里要使用索引取值,不能使用对象.属性
   Console.WriteLine(messageDy);
   Console.ReadKey(); 
   #endregion
로그인 후 복사

结果是:

 

最后看看使用JSON.NET的情况,引入类库:

 

下面的英文,看不懂可略过。。。

Json.NET is a third party library which helps conversion between JSON text and .NET object using the JsonSerializer. The JsonSerializer converts .NET objects into their JSON equivalent text and back again by mapping the .NET object property names to the JSON property names. It is open source software and free for commercial purposes.

The following are some awesome【极好的】 features,
Flexible JSON serializer for converting between .NET objects and JSON.
LINQ to JSON for manually reading and writing JSON.
High performance, faster than .NET's built-in【内嵌】 JSON serializers.
Easy to read JSON.
Convert JSON to and from XML.
Supports .NET 2, .NET 3.5, .NET 4, Silverlight and Windows Phone.
Let's start learning how to install and implement:

In Visual Studio, go to Tools Menu -> Choose Library Package Manger -> Package Manager Console. It opens a command window where we need to put the following command to install Newtonsoft.Json.

Install-Package Newtonsoft.Json
OR
In Visual Studio, Tools menu -> Manage Nuget Package Manger Solution and type “JSON.NET” to search it online. Here's the figure,

 

//使用Json.NET类库需要引入的命名空间
//-----------------------------------------------------------------------------
using Newtonsoft.Json;
//-------------------------------------------------------------------------
로그인 후 복사
#region 3.Json.NET序列化
   List<Student> lstStuModel = new List<Student>() 
   {
   
   new Student(){ID=1,Name="张飞",Age=250,Sex="男"},
   new Student(){ID=2,Name="潘金莲",Age=300,Sex="女"}
   };
   //Json.NET序列化
   string jsonData = JsonConvert.SerializeObject(lstStuModel);
   Console.WriteLine(jsonData);
   Console.ReadKey();
   //Json.NET反序列化
   string json = @"{ 'Name':'C#','Age':'3000','ID':'1','Sex':'女'}";
   Student descJsonStu = JsonConvert.DeserializeObject<Student>(json);//反序列化
   Console.WriteLine(string.Format("反序列化: ID={0},Name={1},Sex={2},Sex={3}", descJsonStu.ID, descJsonStu.Name, descJsonStu.Age, descJsonStu.Sex));
   Console.ReadKey(); 
   #endregion
로그인 후 복사

运行之后,结果是:

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

使用jquery动态遍历Json对象属性与值步骤详解

jQuery深拷贝Json对象详解(附代码)

위 내용은 Json의 직렬화 및 역직렬화를 구현하는 방법(코드 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

MySQL5.7과 MySQL8.0의 차이점은 무엇입니까? MySQL5.7과 MySQL8.0의 차이점은 무엇입니까? Feb 19, 2024 am 11:21 AM

MySQL5.7과 MySQL8.0은 서로 다른 두 가지 MySQL 데이터베이스 버전입니다. 두 버전 사이에는 몇 가지 주요 차이점이 있습니다. 성능 개선: MySQL8.0은 MySQL5.7에 비해 성능이 일부 향상되었습니다. 여기에는 더 나은 쿼리 최적화 프로그램, 더 효율적인 쿼리 실행 계획 생성, 더 나은 인덱싱 알고리즘 및 병렬 쿼리 등이 포함됩니다. 이러한 개선 사항은 쿼리 성능과 전반적인 시스템 성능을 향상시킬 수 있습니다. JSON 지원: MySQL 8.0에는 JSON 데이터의 저장, 쿼리 및 인덱싱을 포함하여 JSON 데이터 유형에 대한 기본 지원이 도입되었습니다. 이를 통해 MySQL에서 JSON 데이터를 보다 편리하고 효율적으로 처리하고 조작할 수 있습니다. 트랜잭션 기능: MySQL8.0은 원자와 같은 몇 가지 새로운 트랜잭션 기능을 도입합니다.

PHP 배열을 JSON으로 변환하기 위한 성능 최적화 팁 PHP 배열을 JSON으로 변환하기 위한 성능 최적화 팁 May 04, 2024 pm 06:15 PM

PHP 배열을 JSON으로 변환하기 위한 성능 최적화 방법은 다음과 같습니다. JSON 확장 및 json_encode() 함수를 사용하여 문자 이스케이프를 방지하고 버퍼를 사용하여 JSON 인코딩 결과 캐싱을 고려합니다. JSON 인코딩 라이브러리.

Jackson 라이브러리의 주석은 JSON 직렬화 및 역직렬화를 어떻게 제어합니까? Jackson 라이브러리의 주석은 JSON 직렬화 및 역직렬화를 어떻게 제어합니까? May 06, 2024 pm 10:09 PM

Jackson 라이브러리의 주석은 JSON 직렬화 및 역직렬화를 제어합니다. 직렬화: @JsonIgnore: 속성 무시 @JsonProperty: 이름 지정 @JsonGetter: get 메서드 사용 @JsonSetter: set 메서드 사용 역직렬화: @JsonIgnoreProperties: @JsonProperty 속성 무시: 이름 지정 @JsonCreator: 생성자 사용 @JsonDeserialize: 사용자 정의 논리

PHP에 대한 심층적인 이해: JSON 유니코드를 중국어로 변환하는 구현 방법 PHP에 대한 심층적인 이해: JSON 유니코드를 중국어로 변환하는 구현 방법 Mar 05, 2024 pm 02:48 PM

PHP에 대한 심층적인 이해: JSONUnicode를 중국어로 변환하는 구현 방법 개발 중에 JSON 데이터를 처리해야 하는 상황이 자주 발생하며, JSON의 유니코드 인코딩은 일부 시나리오, 특히 변환해야 할 때 몇 가지 문제를 일으킬 수 있습니다. 유니코드 인코딩을 한자로 변환하는 경우입니다. PHP에는 이러한 변환 프로세스를 달성하는 데 도움이 되는 몇 가지 방법이 아래에 소개되고 구체적인 코드 예제가 제공됩니다. 먼저 JSON의 Un을 먼저 이해해 봅시다.

Java 직렬화는 성능에 어떤 영향을 줍니까? Java 직렬화는 성능에 어떤 영향을 줍니까? Apr 16, 2024 pm 06:36 PM

직렬화가 Java 성능에 미치는 영향: 직렬화 프로세스는 성능에 큰 영향을 미치는 리플렉션에 의존합니다. 직렬화에는 객체 데이터를 저장하기 위한 바이트 스트림 생성이 필요하므로 메모리 할당 및 처리 비용이 발생합니다. 큰 개체를 직렬화하면 많은 메모리와 시간이 소모됩니다. 직렬화된 객체는 네트워크를 통해 전송될 때 로드를 증가시킵니다.

C++ 함수 라이브러리는 직렬화 및 역직렬화를 어떻게 수행합니까? C++ 함수 라이브러리는 직렬화 및 역직렬화를 어떻게 수행합니까? Apr 18, 2024 am 10:06 AM

C++ 라이브러리 직렬화 및 역직렬화 가이드 직렬화: 출력 스트림을 생성하고 이를 아카이브 형식으로 변환합니다. 객체를 아카이브로 직렬화합니다. 역직렬화: 입력 스트림을 생성하고 이를 아카이브 형식에서 복원합니다. 아카이브에서 객체를 역직렬화합니다. 실제 예: 직렬화: 출력 스트림 생성. 아카이브 객체를 생성합니다. 객체를 생성하고 아카이브에 직렬화합니다. 역직렬화: 입력 스트림을 생성합니다. 아카이브 객체를 생성합니다. 객체를 생성하고 아카이브에서 역직렬화합니다.

PHP 튜토리얼: JSON 유니코드를 한자로 변환하는 방법 PHP 튜토리얼: JSON 유니코드를 한자로 변환하는 방법 Mar 05, 2024 pm 06:36 PM

JSON(JavaScriptObjectNotation)은 웹 애플리케이션 간의 데이터 교환에 일반적으로 사용되는 경량 데이터 교환 형식입니다. JSON 데이터를 처리할 때 유니코드로 인코딩된 중국어 문자(예: "u4e2du6587")를 자주 접하고 이를 읽을 수 있는 중국어 문자로 변환해야 합니다. PHP에서는 몇 가지 간단한 방법을 통해 이러한 변환을 수행할 수 있습니다. 다음으로 JSONUnico 변환 방법을 자세히 소개하겠습니다.

PHP 배열을 JSON으로 변환하기 위한 빠른 팁 PHP 배열을 JSON으로 변환하기 위한 빠른 팁 May 03, 2024 pm 06:33 PM

PHP 배열은 json_encode() 함수를 통해 JSON 문자열로 변환할 수 있으며(예: $json=json_encode($array);), 반대로 json_decode() 함수를 사용하면 JSON에서 배열로 변환할 수 있습니다($array= json_decode($json);) . 다른 팁에는 심층 변환 방지, 사용자 정의 옵션 지정 및 타사 라이브러리 사용이 포함됩니다.

See all articles