다양한 언어의 JSON

7718 단어
JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.

// Javascript
{
  "firstitem" : "first data", 
  "list" : [
    "bold",
    "italics"
  ]
}


저는 일반적으로 '객체'{} 및 '목록'[]이라고 하는 두 가지 주요 구조를 활용하고 있습니다. 대부분의 언어는 이를 하나 이상의 방법으로 나타낼 수 있습니다. 이러한 구조는 JSON을 생성하지 않지만 라이브러리(이 문서 이후)는 변환을 수행할 수 있습니다.



// Lua
{
  firstitem = "first data", 
  list = {
    "bold",
    "italics"
 } 
}


Lua는 목록에 대해서도 객체{} 표기만 있으면 거의 동일합니다. 연관에는 콜론이 아닌 등호가 사용됩니다. 또한 Lua는 JSON, ["first item"] = "first data" 와 같은 공백을 허용하지만 필드 이름을 인용하지 않습니다.

// Python
{
  'firstitem' : 'first data', 
  'list' : [
    'bold',
    'italics'
  ]
}


Python은 정말 비슷해 보이지만 문자열 리터럴은 큰따옴표가 아니라 작은따옴표입니다. 튜플을 사용하여 목록을 만들 수도 있습니다.

// Python
{
  'firstitem' : 'first data', 
  'list' : (
    'bold',
    'italics'
   )
}


이렇게 하면 목록 구문이 달라지지만 필요한 출력을 얻을 수 있습니다.



// c#
public class Data
{
  public string firstitem { get; set; }
  public List<string> list { get; set; }
}


C#은 정적 유형 언어이므로 구조와 일치하는 유형을 정의합니다. 그러나 C#에는 다양한 기능이 있으며 훨씬 더 많은 기능을 사용할 수 있습니다.

// c#
new {
  firstitem = "first data", 
  list = new List<string> {
    "bold",
    "italics",
 } 
}



// c#
Dictionary<string, object> data = new {
  { "firstitem", "first data" },
  { "list", new List<string> {
    "bold", "italics",
  }},
};


이것은 속임수입니다. object의 사양은 라이브러리 "일반"표현에 데이터를 배치합니다. 예를 들어 Newtonsoft의 Json 라이브러리는 캐스팅할 수 있는 유형에 대해 JObject, JArray를 사용합니다.



// D
public class Data
{
  public string firstitem;
  public string[] list;
}



// D
new class {
  auto firstitem = "first data";
  auto list = [
    "bold",
    "italics"
  ];
}



// D
Variant[string] data = [
  "firstitem" : Variant("first data"),
  "list" : Variant([
    "bold",
    "italics",
 ])
];


모든 유형에 object 표현이 있는 C#과 달리 Auto-Boxing을 사용하는 모든 유형에 대한 부모가 없습니다. 그러나 D는 Variant 유형을 제공합니다. 이 유형은 다른 유형을 보유할 수 있고 명시적으로 생성해야 합니다.

좋은 웹페이지 즐겨찾기