source

C#용 JSON 라이브러리

factcode 2023. 2. 17. 21:41
반응형

C#용 JSON 라이브러리

Microsoft는 C#에서 JSON과 연동하는 라이브러리를 제공하고 있습니까?그렇지 않은 경우 어떤 오픈 소스 라이브러리를 권장합니다.

JSON.Net

ServiceStack Json Serializer도 사용해 보십시오.이것이 가장 빠릅니다.현시점에서는 주요 JSON 시리얼라이저의 벤치마크를 기반으로 하여 모든 POCO 유형, Data Contracts, Lists/Dictionary, Interfaces, Inheritance, 익명 유형을 포함한 Late-bound 객체의 시리얼화를 지원합니다.

기본적인 예

var customer = new Customer { Name="Joe Bloggs", Age=31 };
var json = customer.ToJson();
var fromJson = json.FromJson<Customer>(); 

주의: 성능이 중요하지 않은 경우에만 Microsoft JavaScript Serializer를 사용하십시오.다른 JSON 시리얼라이저보다 최대 40~100배 느리기 때문에 벤치마크에서 제외해야 했습니다.

.net 프레임워크는 JavaScriptSerializer를 통해 JSON을 지원합니다.여기 시작할 수 있는 좋은 예가 있습니다.

using System.Collections.Generic;
using System.Web.Script.Serialization;

namespace GoogleTranslator.GoogleJSON
{
    public class FooTest
    {
        public void Test()
        {
            const string json = @"{
              ""DisplayFieldName"" : ""ObjectName"", 
              ""FieldAliases"" : {
                ""ObjectName"" : ""ObjectName"", 
                ""ObjectType"" : ""ObjectType""
              }, 
              ""PositionType"" : ""Point"", 
              ""Reference"" : {
                ""Id"" : 1111
              }, 
              ""Objects"" : [
                {
                  ""Attributes"" : {
                    ""ObjectName"" : ""test name"", 
                    ""ObjectType"" : ""test type""
                  }, 
                  ""Position"" : 
                  {
                    ""X"" : 5, 
                    ""Y"" : 7
                  }
                }
              ]
            }";

            var ser = new JavaScriptSerializer();
            ser.Deserialize<Foo>(json);
        }
    }

    public class Foo
    {
        public Foo() { Objects = new List<SubObject>(); }
        public string DisplayFieldName { get; set; }
        public NameTypePair FieldAliases { get; set; }
        public PositionType PositionType { get; set; }
        public Ref Reference { get; set; }
        public List<SubObject> Objects { get; set; }
    }

    public class NameTypePair
    {
        public string ObjectName { get; set; }
        public string ObjectType { get; set; }
    }

    public enum PositionType { None, Point }
    public class Ref
    {
        public int Id { get; set; }
    }

    public class SubObject
    {
        public NameTypePair Attributes { get; set; }
        public Position Position { get; set; }
    }

    public class Position
    {
        public int X { get; set; }
        public int Y { get; set; }
    }
}

여기를 보시면 C#의 JSON용 라이브러리가 몇 개 표시되어 있습니다.

http://json.org/

LINQ 버전 및 기타 버전이 있습니다.C#과 JSON에는 약 7개의 라이브러리가 있습니다.

이게 당신이 찾고 있던 건가요?

System.Web.Script.시리얼라이제이션JavaScript Serializer

시스템을 살펴봅니다.web.script를 참조해 주세요.serialization namespace (필요할 것 같습니다)넷 3.5)

이 질문에 대한 자세한 답변은 다음과 같습니다.예, 입니다.Net에는 버전 3.5 이후 시스템을 통해 JSON seriliazer/deserlizer가 포함되어 있습니다.런타임시리얼화Json 네임스페이스: http://msdn.microsoft.com/en-us/library/system.runtime.serialization.json(v=vs.110).aspx

하지만 JSON의 창시자에 따르면넷, 입니다.Net Framework는 오픈 소스 구현에 비해 매우 느립니다.

첫 번째 질문에 답하기 위해 Microsoft는 Data ContractJsonSerializer를 출하하고 있습니다.msdn How to: Serialize and Deserialize JSON Data를 참조하십시오.

Vici Project를 시도해봐, Vici Parser.JSON 파서/토큰라이저를 포함합니다.MVC 프레임워크와 함께 사용하기 때문에 매우 효과적입니다.

자세한 것은, http://viciproject.com/wiki/projects/parser/home 를 참조해 주세요.

오픈 소스라고 말하는 것을 잊어버렸기 때문에 언제든지 코드를 볼 수 있습니다.

언급URL : https://stackoverflow.com/questions/1474377/json-library-for-c-sharp

반응형