Click or drag to resize

JSON 오브젝트를 ASP 페이지로 전달

JSON(제이슨, JavaScript Object Notation)은 속성-값 쌍으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷입니다. 자바스크립트 언어로부터 파생되어 자바스크립트의 구문 형식을 따르지만 언어 독립형 데이터 포맷입니다. 자바스크립트에서 생성한 오브젝트 데이터를 서버 페이지로 전달해 사용할 수 있고 서버 페이지에서 데이터를 생성해 자바스크립트에서 사용할 수도 있습니다. TABS.JSON 오브젝트는 ASP 페이지를 개발하는데 있어 추가적인 코드 없이 매우 직관적으로 JSON 데이터를 처리하는 기능을 제공합니다.

JSON 오브젝트를 ASP 페이지로 전달

아래는 JSON 표기를 사용해 자바스크립트 오브젝트를 생성하고 오브젝트 데이터를 ASP 페이지로 전송하는 코드입니다. 서버로 전달하기 위해서 JSON 오브젝트인 person을 JSON.stringify() 메서드를 사용해 JSON 텍스트로 변환 후 form의 hidden 값에 저장한 후 서버로 제출합니다.

form.asp
<script>
  function send() {
    var person = {
      name: "홍길동",
      age: 20,
      male: true,
      family: {
        count: 2,
        father: "홍판서",
        mother: "춘섬"
      }
    };

    var jsonText = document.getElementById("jsonText");
    jsonText.value = JSON.stringify(person);
    document.getElementById("form1").submit();
  }
</script>

<form id="form1" action="json_send.asp" method="POST">
  <input type="button" value="JSON 오브젝트 전송" onclick="send()">
  <input type="hidden" id="jsonText" name="jsonText">
</form>

JSON 텍스트를 받은 서버 페이지에서는 먼저 텍스트를 해석해야 합니다. TABS.JSON 서버 오브젝트를 생성한 후 FromString 메서드를 호출해 해석할 수 있습니다. 올바르게 해석되면 TABS.JSON 오브젝트가 반환됩니다. 해당 오브젝트에 속성 이름을 지정해 값을 읽어 올 수 있습니다.

json_send.asp
<%
Dim json, person
Set json = Server.CreateObject("TABS.JSON")
Set person = json.FromString(Request("jsonText"))
%>
<p>name = <%=person("name")%></p>
<p>age = <%=person("age")%></p>
<p>male = <%=person("male")%></p>
<p>family/father = <%=person("family")("father")%></p>
<p>family/mother = <%=person("family")("mother")%></p>

JSON 오브젝트 배열을 ASP 페이지로 전달

배열 형식으로 이루어진 JSON 데이터를 서버에서 받는 방법은 약간 차이가 있습니다. 아래 코드는 두 개의 오브젝트를 가지는 배열을 정의하고 있습니다.

javascript
var persons = [{
    name: "홍길동1",
    age: 20
    }, {
    name: "홍길동2",
    age: 20
    }
];

이전 예제에서는 JSON 텍스트를 해석한 결과가 TABS.JSON 오브젝트이므로 Set 키워드를 사용해 반환 값을 받았지만 전달된 데이터가 배열이므로 일반 변수로 받을 수 있습니다. 배열이므로 인덱스(0부터 시작)를 사용해 TABS.JSON 오브젝트를 참조할 수 있으며 이어서 속성 이름을 명시해 값을 읽을 수 있습니다.

ASP
<%
Dim json, persons
Set json = Server.CreateObject("TABS.JSON")
persons = json.FromString(Request("jsonText"))
%>
<p>name = <%=persons(0)("name")%></p>
<p>age = <%=persons(0)("age")%></p>
<p>name = <%=persons(1)("name")%></p>
<p>age = <%=persons(1)("age")%></p>