.NET

Json.NET을 사용하여 C#에서 XML을 JSON으로 변환하기

XML을 Couchbase Server에 로드할 수 있는 JSON 데이터로 변환하기 의 경우 약간의 .NET. 데이터의 출처에 따라 다음과 같은 도구를 사용할 수 있습니다. Talend. 그러나 다음과 같이 간단한 C# .NET 응용 프로그램을 작성할 수도 있습니다. 뉴턴소프트의 Json.NET 를 클릭합니다. 이 글에서는 Json.NET을 사용하여 C#에서 XML을 JSON으로 변환하는 방법을 보여드리겠습니다.

10 Common NoSQL Use Cases for Modern Applications카우치베이스 서버를 사용하지 않나요? 문제없습니다. 이것은 매우 일반적인 예시입니다. 하지만 솔루션의 중심에 JSON을 사용하는 모든 기능을 갖춘 데이터베이스를 사용하면 인덱싱, 쿼리, 검색, 분석, 모바일 지원이 모두 기본 제공되고 액세스할 수 있다는 이점을 생각해 보세요. .NET SDK. 더 보기 기술 백서의 장점 또는 카우치베이스 다운로드 를 클릭하고 이 게시물을 팔로우하세요.

XML 데이터

이 튜토리얼에서는 매우 간단한 XML 예제를 사용하겠습니다. XML이 더 복잡하다면(예: 여러 속성) 접근 방식도 더 복잡해야 할 것입니다. (Json.NET은 모든 XML에서 Json으로의 변환을 처리할 수 있지만, 특정 세트의 전환 규칙). 다음은 데이터 샘플입니다:

이 XML이 C#에 하드코딩된 문자열로 되어 있는 것을 볼 수 있습니다. 실제 상황에서는 데이터베이스, REST API, XML 파일 등에서 XML을 가져올 가능성이 높습니다.

원시 XML을 확보한 후에는 XmlDocument 객체 (XmlDocument 에 살고 있습니다. System.Xml 네임스페이스).

Json.NET으로 변환

일단 XmlDocument 객체를 사용하는 경우 Json.NET을 사용하여 해당 객체를 Json 표현으로 변환할 수 있습니다.

이 예제에서는 Json.NET에 XML 노드를 직렬화하도록 요청하고 있습니다:

  • 사용 Formatting.None. 실제 Json을 표시하려면 다음을 사용하는 것이 좋습니다. 서식.들여쓰기
  • 마지막 true 는 루트 객체를 생략할 것을 지정합니다. 위의 XML에서는 다음과 같이 생각할 수 있습니다. 를 루트 객체로 지정합니다. 저는 Invoice 객체의 값만 원합니다. 루트 노드를 생략하지 않았다면 결과 Json은 다음과 같이 보일 것입니다: {"Invoice":{"Timestamp":"1/1/2017 00:01","CustNumber":"12345","AcctNumber":"54321"}}

Json 결과 저장

마지막으로, Json을 Couchbase에 넣어 보겠습니다. 이를 수행하는 가장 쉬운 방법은 다시 한 번 JsonConvert 를 사용하여 Json을 C#로 역직렬화합니다. 객체. 그런 다음 해당 객체는 Couchbase의 bucket.Insert(...) 메서드를 사용합니다.

이 방법을 사용하면 Json은 다음과 같이 Couchbase에 저장됩니다:

XML serialized to object

이 방법도 괜찮을 수도 있지만, 형식을 더 많이 제어하고 싶을 때가 많습니다. Json.NET을 사용하면 지정된 클래스로 직렬화할 수 있습니다. 객체. 를 만들어 보겠습니다. 인보이스 클래스처럼:

이제 몇 가지 유형 정보가 있음을 알 수 있습니다. 타임스탬프는 날짜/시간 이고, AcctNumber는 int. 변환은 계속 작동하지만 결과는 다음과 같이 달라집니다. Json.NET의 전환 규칙. (또한 Json.NET 전체 문서 아직 익숙하지 않다면).

삽입 결과는 다음과 같습니다:

XML serialized to new class object

  • 타임스탬프 필드가 좀 더 표준화된 방식으로 저장된다는 점에 주목하세요.
  • acctNumber 필드 값은 따옴표로 묶여 있지 않아 숫자로 저장되고 있음을 나타냅니다.
  • 마지막으로 필드 이름이 다르다는 것을 알 수 있습니다. 이는 Json.NET이 기본적으로 Json 필드 이름을 지정하는 방식 때문입니다. 다른 이름을 지정하려면 제이슨 프로퍼티 속성입니다.

그게 다입니다.

한 가지 더 사소한 점을 지적하고 싶습니다: 저는 Guid.NewGuid().ToString() 를 사용하여 문서에 대한 임의의 키를 만들 수 있습니다. XML 데이터에 키로 사용하려는 값이 있는 경우 해당 값을 대신 사용할 수 있으며 사용해야 합니다.

이 블로그 게시물은 Couchbase 사용자와의 이메일 대화에서 영감을 얻어 작성되었습니다. XML을 JSON으로 변환하는 과정을 더 쉽게 하기 위한 도구, 팁 또는 요령에 대한 제안이 있으시면 알려주세요. 또는 제가 블로그에 포스팅하고 싶은 내용이 있으면 연락주세요! 다음 연락처로 이메일 보내기 또는 트위터 @mgroves에 문의.

계속 학습하기

 

 

 

이 문서 공유하기
받은 편지함에서 카우치베이스 블로그 업데이트 받기
이 필드는 필수 입력 사항입니다.

작성자

게시자 매튜 그로브스

Matthew D. Groves는 코딩을 좋아하는 사람입니다. C#, jQuery, PHP 등 무엇이든 풀 리퀘스트를 제출할 정도로 코딩을 좋아합니다. 90년대에 부모님의 피자 가게를 위해 QuickBASIC POS 앱을 만든 이후로 전문적으로 코딩을 해왔습니다. 현재 Couchbase의 선임 제품 마케팅 관리자로 일하고 있습니다. 여가 시간에는 가족과 함께 축구 경기를 관람하고 개발자 커뮤니티에 참여하며 시간을 보냅니다. 그는 .NET의 AOP, .NET의 프로 마이크로서비스, Pluralsight 저자, Microsoft MVP의 저자이기도 합니다.

댓글 남기기

카우치베이스 카펠라를 시작할 준비가 되셨나요?

구축 시작

개발자 포털에서 NoSQL을 살펴보고, 리소스를 찾아보고, 튜토리얼을 시작하세요.

카펠라 무료 사용

클릭 몇 번으로 Couchbase를 직접 체험해 보세요. Capella DBaaS는 가장 쉽고 빠르게 시작할 수 있는 방법입니다.

연락하기

카우치베이스 제품에 대해 자세히 알고 싶으신가요? 저희가 도와드리겠습니다.