JavaScript È°¿ëÆÁ
2018.09.30 / 22:45

json ¼­¹ö·Î º¸³»±â

GAScripter
Ãßõ ¼ö 175

3.6 JSON À» È°¿ëÇÏ¿© µ¥ÀÌÅ͸¦ ¼­¹ö·Î º¸³»±â
¹Ù·Î ÀÌÀüÀÇ 3-14 »ùÇÃÀº ºê¶ó¿ìÀúÀÇ ÆĶó¹ÌÅ͸¦ XML Çü½ÄÀ¸·Î º¯È¯ÇÏ¿© ¼­¹ö·Î º¸³»´Â ¹æ¹ýÀ» Á¦½ÃÇß
¾ú´Ù. µ¥ÀÌŸ Æ÷¸ËÀÇ Ç¥ÁØÀÌ µÇ¼­¹ö¸° XMLÀ» ÀÌ¿ëÇÑ´Ù´Â ÀüüÀûÀÎ ¸Æ¶ôÀº ±×·²½ÎÇßÁö¸¸ »ç½Ç XMLÀ» ¸¸
µå´Â °úÁ¤ÀÌ º¹ÀâÇÑ Äõ¸® ½ºÆ®¸µ Á¶ÇÕÀÛ¾÷À̶ó¸é ´©°¡ ÇÏ·ÁÇϰڴ°¡ ¸»ÀÌ´Ù. ³ª Àڽŵµ ÀÌ·± ÀÛ¾÷Àº Á¤¸»
½È¾îÇÑ´Ù.
XML À» »ý¼ºÇϱâ À§ÇÑ javascript ³¯ÄÚµùÀÇ ´ë¾ÈÀ¸·Î JSON(Javascript Object Notation, www.json.org)
À» ¼Ò°³ÇÑ´Ù. JSON Àº ÅؽºÆ® Æ÷¸Ë±â¹ÝÀÇ °æ·® µ¥ÀÌÅÍ º¯È¯ Æ÷¸ËÀÌ´Ù. ÇÁ·Î±×·¡¹Ö ¾ð¾î¿¡ µ¶¸³Àû¸ç, C ¾ð
¾î°è¿­¿¡ Àͼ÷ÇÑ µ¥ÀÌÅÍ ±¸Á¶ Çü½ÄÀ» ÃëÇÏ°í ÀÖ´Ù. JSONÀº µÎ°¡Áö ÅؽºÆ® Æ÷¸ËÀ» °¡Áö°í Àִµ¥, ù¹ø°
´Â name/value ½ÖÀÇ Ä÷º¼Ç µ¥ÀÌÅÍ ±¸Á¶·Î ÇÁ·Î±×·¡¹Ö ¾ð¾î·Î µûÁö¸é object, record, struct Âë µÇ°Ú´Ù.
µÎ¹ø°´Â Á¤·ÄµÈ value ÀÇ ¸®½ºÆ®ÇüÅ·νá ÇÁ·Î±×·¡¹Ö ¾ð¾î·Î ºñÀ¯ÇÏÀÚ¸é ¹è¿­À̶ó°í º¸¸é µÉ °ÍÀÌ´Ù.
JSON ÀÇ µ¥ÀÌÅÍ ±¸Á¶´Â ¸¹Àº ÇÁ·Î±×·¥ ¾ð¾î¿¡ ÀÇÇؼ­ Áö¿øµÇ°í Àֱ⶧¹®¿¡ XML º¸´Ù´Â À̱âÁ¾ ½Ã½ºÅÛ°£
ÀÇ ÀÌ»óÀûÀÎ ¼±ÅÃÀÌ µÉ °ÍÀÌ´Ù. Ãß°¡ÀûÀ¸·Î JSON Àº Ç¥ÁØ ÀÚ¹Ù½ºÅ©¸³Æ®ÀÇ ºÎ·ùÀ̹ǷΠ¸ðµç À¥ ºê¶ó¿ìÀú°£
¿¡µµ ¾ç¸³ÇÒ ¼ö ÀÖ´Â °ÍÀÌ´Ù.
<3-17 JSON ¿ÀºêÁ§Æ®±¸Á¶µµ(Ãâó : www.json.org)>
À§ ±×¸²Àº JSONÀÇ µ¥ÀÌÅÍ ±¸Á¶¸¦ ³ªÅ¸³»°í ÀÖ´Ù.
Object´Â {} À¸·Î Ç¥½ÃÇÑ´Ù. ¿ÀºêÁ§Æ®¿¡´Â name/value ½ÖÀÌ ÄÝ·Ð(:) ȤÀº ÄÞ¸¶(,) ·Î ±¸ºÐµÇ¾îÁ® ÀÖÀ¸¸ç
¼ø¼­´Â ¾ø´Ù.
Array ´Â [] À¸·Î Ç¥½ÃÇÑ´Ù. ¹è¿­Àº Á¤·ÄµÈ value °¡ ÄÞ¸¶(,) ¿¡ ÀÇÇؼ­ ±¸ºÐµÇ¾îÁ® ÀÖÀ¸¸ç, value °ªÀº ½º
Æ®¸µ("" À¸·Î µÑ·¯½Î¾ß ÇÔ), ¼ýÀÚ, true or false, null, object , array °¡ ¿Ã¼ö ÀÖÀ¸¹Ç·Î ¹è¿­ÀÇ ±¸Á¶´Â °è
ÃþÀûÀ̶ó°í ÇÒ ¼ö ÀÖ´Ù.
½ºÆ®¸µÀº À¯´ÏÄÚµå Á¶ÇÕ ¹× ¹é·¡½¬ À̽ºÄÉÀÌÇÁ(₩)¸¦ »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç '' À» »ç¿ëÇÏ¿© character ¸¦ Ç¥Çö
ÇÒ ¼ö ÀÖ´Ù.
½ºÆ®¸µ°ú ¼ýÀÚ´Â C¾ð¾î ȤÀº ÀÚ¹ÙÀÇ ½ºÆ®¸µ°ú °ÅÀÇ Èí»çÇÏÁö¸¸ 8Áø¼ö ¹× 16Áø¼ö Æ÷¸ËÀº Áö¿øÇÏÁö ¾Ê´Â´Ù.
°ø¹éÀ» name/value ½Ö »çÀÌ»çÀÌ¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
ÇϳªÀÇ ¿¹¸¦ µé¾îº¸ÀÚ. Employ ¶ó´Â Ŭ·¡½º(¸â¹ö·Î firstName, lastName, employeeNumber, title)ÀÇ ÀÎ
½ºÅϽº¸¦ JSON À» ÀÌ¿ëÇؼ­ ¾Æ·¡¿Í °°ÀÌ Ç¥ÇöÇØ º¼ ¼ö ÀÖ´Ù.
var employee = {
"firstName" : John,
"lastName" : Doe,
"employNumber" : 123,
"title" : "Manager"
}
±×·¯¸é À§ Ç¥ÇöÀ» ¿ÀºêÁ§Æ® ¼Ó¼ºÀ» ÀÌ¿ëÇؼ­ ¾Æ·¡¿Í °°ÀÌ ´Ù·ê ¼ö ÀÖ´Ù.
var lastName = employee.lastName;//lastName ¿¡ Á¢±Ù
var title = employee.title;//title ¿¡ Á¢±Ù
employee.emplyeeNumber = 456;//employeeNumber ¸¦ 456 À¸·Î ¼öÁ¤
JSON ÀÇ ÀÎÄÚµùÀº È®½ÇÈ÷ XML ÀÎÄÚµùº¸´Ù °¡º±´Ù. µû¶ó¼­ ³×Æ®¿÷À» ÅëÇؼ­ Å« µ¥ÀÌÅÍ°¡ ¿À°í°¡´Â »óȲ¿¡
¼­´Â ¸¹Àº ÆÛÆ÷¸Õ½ºÀÇ Â÷ÀÌ°¡ ¹ß»ýÇÒ °ÍÀÌ´Ù. JSON ½ÎÀÌÆ®¿¡ °¡º¸¸é Àû¾îµµ 14°³ ÀÌ»óÀÇ ¼­¹öÂÊ ¾îÇø®ÄÉ
À̼ÇÀ» ´Ù·ç´Â ÇÁ·Î±×·¡¹Ö¾ð¾î¿¡¼­ JSON À» »ç¿ëÇÒ ¼ö ÀÖ°Ô²û Áغñ°¡ µÇ¾î ÀÖ´Ù.
ÀÌÁ¦ 3ÀåÀÇ ¸¶Áö¸· ÁÖÁ¦ÀÎ JSON À» ÀÌ¿ëÇÑ °£´ÜÇÑ »ùÇÃÀ» »ìÆ캸ÀÚ.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>JSON Example</title>
<script type="text/javascript" src="json.js"></script>
<script type="text/javascript">
var xmlHttp;
function createXMLHttpRequest() {
if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}
}
function doJSON() {
var car = getCarObject();
//Use the JSON JavaScript library to stringify the Car object
var carAsJSON = JSON.stringify(car);
alert("Car object as JSON:₩n " + carAsJSON);
var url = "JSONExample?timeStamp=" + new Date().getTime();
createXMLHttpRequest();
xmlHttp.open("POST", url, true);
xmlHttp.onreadystatechange = handleStateChange;
xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlHttp.send(carAsJSON);
}
function handleStateChange() {
if(xmlHttp.readyState == 4) {
if(xmlHttp.status == 200) {
parseResults();
}
}
}
function parseResults() {
var responseDiv = document.getElementById("serverResponse");
if(responseDiv.hasChildNodes()) {
responseDiv.removeChild(responseDiv.childNodes[0]);
}
var responseText = document.createTextNode(xmlHttp.responseText);
responseDiv.appendChild(responseText);
}
function getCarObject() {
return new Car("Dodge", "Coronet R/T", 1968, "yellow");
}
function Car(make, model, year, color) {
this.make = make;
this.model = model;
this.year = year;
this.color = color;
}
</script>
</head>
<body>
<br/><br/>
<form action="#">
<input type="button" value="Click here to send JSON data to the server"
onclick="doJSON();"/>
</form>
<h2>Server Response:</h2>
<div id="serverResponse"></div>
</body>
</html>
<3-18 jsonExample.htm ÀÇ Àüü ¼Ò½º ÄÚµå>
package ajaxbook.chap3;
import java.io.*;
import java.net.*;
import java.text.ParseException;
import javax.servlet.*;
import javax.servlet.http.*;
import org.json.JSONObject;
public class JSONExample extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String json = readJSONStringFromRequestBody(request);
//Use the JSON-Java binding library to create a JSON object in Java
JSONObject jsonObject = null;
try {
jsonObject = new JSONObject(json);
}
catch(ParseException pe) {
System.out.println("ParseException: " + pe.toString());
}
String responseText = "You have a " + jsonObject.getInt("year") + " "
+ jsonObject.getString("make") + " " + jsonObject.getString("model")
+ " " + " that is " + jsonObject.getString("color") + " in color.";
response.setContentType("text/xml");
response.getWriter().print(responseText);
}
private String readJSONStringFromRequestBody(HttpServletRequest request){
StringBuffer json = new StringBuffer();
String line = null;
try {
BufferedReader reader = request.getReader();
while((line = reader.readLine()) != null) {
json.append(line);
}
}
catch(Exception e) {
System.out.println("Error reading JSON string: " + e.toString());
}
return json.toString();
}
}
<3-19 JSONExample.java ÀÇ Àüü ¼Ò½º ÄÚµå>
¸¶Áö¸· ¿¹Á¦¿¡¼­ Áß¿äÇÑ ºÎºÐÀ» ±½°Ô Ç¥½ÃÇÏ¿´´Ù. À̹ø ¿¹Á¦¸¦ ½ÇÇàÇØ º¸±â À§Çؼ­´Â json.js ¿Í ÀÚ¹Ù°ü·Ã
json ¶óÀ̺귯¸®°¡ ÇÊ¿äÇÏ´Ù. °ü·Ã ÆÄÀϵéÀº json À¥½ÎÀÌÆ®¿¡¼­ ´Ù¿î¹ÞÀ¸¸é µÈ´Ù. ¿ì¼± ÀÚ¹Ù½ºÅ©¸³Æ®ÂÊ ÇÙ
½ÉÄڵ带 ¸ÕÀú »ìÆ캸ÀÚ.
function getCarObject() {
return new Car("Dodge", "Coronet R/T", 1968, "yellow");
}
function Car(make, model, year, color) {
this.make = make;
this.model = model;
this.year = year;
this.color = color;
}
À§ ÄÚµå´Â ¼³¸íÀÌ º°·Î ÇÊ¿äÄ¡ ¾ÊÀ» °Í °°´Ù. Car °´Ã¼¸¦ ¸¸µé¾î ÁÖ´Â ¸Þ¼ÒµåÀÌ´Ù.
function doJSON() {
var car = getCarObject();
//Use the JSON JavaScript library to stringify the Car object
var carAsJSON = JSON.stringify(car);
alert("Car object as JSON:₩n " + carAsJSON);
var url = "JSONExample?timeStamp=" + new Date().getTime();
createXMLHttpRequest();
xmlHttp.open("POST", url, true);
xmlHttp.onreadystatechange = handleStateChange;
xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlHttp.send(carAsJSON);
}
À§ Äڵ带 º¸¸é ÀÚ¹Ù½ºÅ©¸³Æ® car °´Ã¼¸¦ »ý¼ºÇÑ ÈÄ JSON ÀÚ¹Ù½ºÅ©¸³Æ® ¶óÀ̺귯ÀÌÀÇ stringify ¸¦ »ç¿ëÇØ
¼­ JSON °´Ã¼·Î º¯È¯ÇÏ°í ÀÖ´Ù. ³ª¸ÓÁö ·ÎÁ÷Àº POST ¹æ½ÄÀ» ±¸ÇöÇÑ °ÍÀÌ°í send(() ¸Þ¼Òµå¿¡ JSON °´Ã¼
¸¦ ³Ö¾îÁØ´Ù.
À̹ø¿£ ¼­¹öÂÊ ÇÁ·Î±×·¥À» È®ÀÎÇØ º¸ÀÚ.
JSONObject jsonObject = null;
try {
jsonObject = new JSONObject(json);
}
catch(ParseException pe) {
System.out.println("ParseException: " + pe.toString());
}
String responseText = "You have a " + jsonObject.getInt("year") + " "
+ jsonObject.getString("make") + " " + jsonObject.getString("model")
+ " " + " that is " + jsonObject.getString("color") + " in color.";
¿ì¼± ¼­¹ö ÇÁ·Î±×·¥Àº Http request °´Ã¼¿¡¼­ JSON ¹®ÀÚ¿­À» ÃßÃâÇÑ´Ù. ÀÌ·¸°Ô ÃßÃâµÈ ¹®ÀÚ¿­À» JSON ÀÚ
¹Ù ¶óÀ̺귯¸®ÀÇ JSONObject Ŭ·¡½º¸¦ »ý¼ºÇÒ¶§ »ý¼ºÀÚÀÇ ÆĶó¹ÌÅÍ·Î ÀԷµȴÙ. JSONObject ´Â ÀÚµ¿À¸·Î
JSON ¹®ÀÚ¿­À» ÆĽÌÇÏ°í getXxx ¸Þ¼Òµå¸¦ ÀÌ¿ëÇؼ­ ¿©·¯ ŸÀÔÀÇ µ¥ÀÌÅ͸¦ ÃßÃâÇÒ ¼ö ÀÖ´Â °ÍÀÌ´Ù. Á¤¸»
°£´ÜÇÏÁö ¾ÊÀº°¡?
´ÙÀ½Àº 3-19 »ùÇÃÀ» ½ÇÇàÇÑ °á°ú È­¸éÀÌ´Ù.
Click here to send JSON data to the server ¹öÆ°À» Ŭ¸¯Çϸé alert âÀ¸·Î JSON object µ¥ÀÌÅÍ ±¸Á¶
¸¦ È®ÀÎÇÒ ¼ö ÀÖ´Ù. ±×¸®°í ¼­¹ö¿¡¼­ ó¸®µÈ °á°ú¹®ÀÚ¿­ÀÎ You have a 1968 Dodge Coronet R/T that
is yellow in color. À» È®ÀÎ ÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù



Ãâó: http://uip80.tistory.com/entry/json-¼­¹ö·Î-º¸³»±â?category=199706 [¿©¸íÀÇÁý]