JavaScript È°¿ëÆÁ
2019.05.29 / 24:28

[ÆĽÌ] 2. JSON ´Ù¿î·Îµå ¹× ±âº»ÀûÀÎ ±¸Á¶ ÀÍÈ÷±â

Źµ¹ÀÌ°³¹ßÀÚ
Ãßõ ¼ö 280

JSON ÆĽÌÀ» ÀÌ¿ëÇÏ·Á¸é JSON¶óÀ̺귯¸®¸¦ Æ÷ÇÔ½ÃÄÑÁÖ¾î¾ß ÇÑ´Ù. ¹°·Ð º»ÀÎÀÌ Á÷Á¢ JSON ÆĽ̿¡ ÇÊ¿äÇÑ Å¬·¡½º³ª ¸Þ¼Òµå¸¦ ÀüºÎ ¸¸µé¼öµµ ÀÖÁö¸¸ ±×°Ç ¸»±×´ë·Î ½Ã°£³¶ºñ¿¡ °¡±õ´Ù. ÀÌ¹Ì ¸¸µé¾îÁ®ÀÖ´Â ¶óÀ̺귯¸®°¡ Àִµ¥ ±×°É ¶Ç ¸¸µé ÇÊ¿ä´Â ¾ø´Ù. ½Ç·ÂÇâ»óÀ» À§ÇØ ¸¸µé¾î ¿¬½ÀÇϴ°Ŷó¸é ¾ê±â°¡ ´Þ¶óÁöÁö¸¸ ¿ì¸®´Â ÆĽÌÀ» ¸ñÀûÀ¸·Î ÇÏ´Â °ÍÀ̱⠶§¹®¿¡ ¸¸µé¾îÁ® Àִ ǥÁØÈ­µÈ JSONÀ» ÀÌ¿ëÇϵµ·Ï ÇÑ´Ù.

¿ì¼± ±¸±Û¿¡¼­ ¹èÆ÷ÁßÀÎ simple jsonÀ» ´Ù¿î¹Þ´Â´Ù.


ÀÌÈÄ ´Ù¿î·ÎµåÇÑ json-simple-1.1.1.jar ÆÄÀÏÀ» ÀÌŬ¸³½º¿¡¼­ ¶óÀ̺귯¸® Ãß°¡¸¦ ÇØÁØ´Ù.

¿©±â±îÁö ÇßÀ¸¸é JSONÀ» »ç¿ëÇÒ Áغñ´Â ³¡³­°ÍÀÌ´Ù.

JSONÀ» ºÐ¼®Çϱ⿡ ¾Õ¼­ ÀÌ ÇÑ°¡Áö¸¦ ¹Ýµå½Ã ±â¾ïÇØ ³õ±æ ¹Ù¶õ´Ù
"JSONÀº Map ±¸Á¶ÀÌ´Ù."
Map±¸Á¶¶õ ÀڷᱸÁ¶¿¡¼­ key¿Í value¸¦ °°ÀÌ ÀúÀåÇØ ³õ´Â ¹æ½ÄÀ» ÀǹÌÇÑ´Ù. Áï, ȸ¿ø°ü¸®¸¦ ¿¹¸¦ µé¾îº¸¸é id:test¸¦ key·Î, pw:1234¸¦ value·Î ÇÏ¿© µÑÀ» 1½ÖÀ¸·Î ¹­¾î °ü¸®ÇÏ´Â ¹æ½ÄÀÌ´Ù.

À̸¦ ¿°µÎ¿¡ µÎ°í ÀÌÁ¦ ±âº»ÀûÀÎ JSONÀÇ ±¸Á¶¸¦ ºÐ¼®Çغ¸ÀÚ

{"univ":{"professor":"±è±³¼ö","student":"ÀÌÇлý"}}

ÀÌ°Ô ¹Ù·Î JSONÀ» ÆĽÌÇßÀ»¶§ ¹ÞÀ» ¼ö ÀÖ´Â °á°úÀÌ´Ù. ¹°·Ð ÀÌ·¸°Ô ´Ü¼øÇÏ°Ô °á°ú°¡ ³ª¿À´Â °æ¿ì´Â Àý´ë ¾ø´Ù. ±×·¯³ª ±âº»ÀûÀÎ ±¸Á¶´Â Å©°Ô º¯ÇÏÁö ¾ÊÀ¸´Ï ½¬¿î ¿¹Á¦ºÎÅÍ ºÐ¼®Çغ¸ÀÚ

±×·±µ¥ ÀÌ·± ªÀº ÄÚµå´Â Å©°Ô ¹®Á¦°¡ µÇÁú ¾ÊÀ¸³ª Äڵ尡 ±æ¾îÁö°Ô µÇ¸é ¾Ë¾Æº¸±â°¡ Èûµé´Ù. µû¶ó¼­ ÀÌ Äڵ带 °¡µ¶¼ºÀ» ³ô¿© Ç¥ÇöÇÏ¸é ´ÙÀ½°ú °°´Ù.

{ "univ":{ "professor":"±è±³¼ö", "student":"ÀÌÇлý" } }

ÀÌÁ¦´Â ¾Ë¾Æº¸±â ÇÑ°á ´õ ¼ö¿ùÇÒ °ÍÀÌ´Ù. 
¾Æ±îµµ ¾ê±âÇßµíÀÌ Map±¸Á¶±â ¶§¹®¿¡ key:value ±¸Á¶·Î ÀúÀåµÈ´Ù. ÀÌ¿¡ ¸ÂÃç º¸¸é professor¶ó´Â key¿Í ±è±³¼ö¶ó´Â value°¡ ½ÖÀ¸·Î ÀúÀåµÇ°í, student¶ó´Â key¿Í ÀÌÇлýÀ̶õ value°¡ °°ÀÌ ½ÖÀ¸·Î µÇ´Â °ÍÀÌ´Ù. 
¹Ù±ù°í¸®µµ º¸¸é univ¶ó´Â key¿Í professor, student¸¦ Æ÷ÇÔÇÏ´Â { } ³»ºÎ°¡ value·Î ¿«¿© ÇѽÖÀ¸·Î ÀúÀåµÇ´Â °ÍÀÌ´Ù.

±×·¯¸é ¿©±â¼­ ¿ì¸®°¡ ÆĽÌÇØ¿Í¾ß ÇÒ ÃÖÁ¾ ¸ñÇ¥°ªÀº professor¿Í studentÀÇ Á¤º¸¶ó°í ÀâÀÚ. ±×·¯¸é ¹Ù·Î Àú °ª¿¡ Á¢±ÙÇÒ ¼ö ÀÖÀ»±î? ´äÀº ¾Æ´Ï´Ù.
professor¿Í  student´Â univÀÇ value·Î ¹­¿© ÀúÀåµÇ¾î ÀÖ´Â °ÍÀ̱⠶§¹®¿¡ univºÎÅÍ ÆĽÌÇÏ¿© ¸ÕÀú Á¢±ÙÇÑ ´ÙÀ½ professor¿Í studentÀÇ °ªÀ» ¹Þ¾Æ¿Ã ¼ö ÀÖ´Â °ÍÀÌ´Ù.

ÀÌÁ¦ Á÷Á¢ Äڵ带 Â¥¼­ ¼³¸íÀ» ÇØ º¸°Ú´Ù.
¾Æ±î ¶óÀ̺귯¸®¸¦ Ãß°¡ ÇßÀ¸´Ï À̹ø¿£ »ç¿ëÇÒ ¶óÀ̺귯¸®µéÀ» importÇØÁÖ¾î¾ß ÇÑ´Ù.

import org.json.simple.JSONObject; //JSON°´Ã¼¸¦ ¸¸µå´Âµ¥ »ç¿ë import org.json.simple.parser.JSONParser; //JSON°´Ã¼¸¦ ÆĽÌÇØ¿À´Âµ¥ »ç¿ë import org.json.simple.parser.ParseException; //¿¹¿Üó¸®

±×¸®°í ¿¹Á¦ Äڵ带 Ŭ·¡½º¸¦ »ý¼ºÇÏ¿© Á÷Á¢ JSON¿¡ Ãß°¡½ÃÄÑÁØ´Ù.

class JSONAdd{ String json; //JSON°´Ã¼¸¦ Àü´ÞÇØ ÁÖ±â À§ÇÑ String void jsonadd(){ JSONObject inner = new JSONObject(); //³»ºÎ inner.put("professor", "±è±³¼ö"); //(key="professor" : value="±è±³¼ö") µÑ´Ù String inner.put("student", "ÀÌÇлý"); //(key="student" : value="ÀÌÇлý") µÑ´Ù String JSONObject outer = new JSONObject(); //¿ÜºÎ outer.put("univ", inner); //(key="univ" : value=inner) String, °´Ã¼ ŸÀÔ json = outer.toJSONString();//ÃÖÁ¾ÀûÀ¸·Î ¸¸µé¾îÁø json°´Ã¼¸¦ StringÀ¸·Î º¯È¯ÇÏ¿© ÀúÀå //outer¸¦ ³Ö¾î¼­ °´Ã¼¸¦ ±×´ë·Î »Ì¾Æµµ Ãâ·ÂÀº µÇ³ª, °¡±ÞÀû Çüº¯È¯ Çϴ°ÍÀ» ±ÇÀå System.out.println(json); } }

»ý°¢º¸´Ù °£´ÜÇÏ´Ï °Ì¸ÔÁö ¸»±æ ¹Ù¶õ´Ù. ¿ì¼± µ¥ÀÌÅ͸¦ ¸¸µå´Âµ¥ÀÖ¾î JSONÀº ³»ºÎ -> ¿ÜºÎ ¼øÀ¸·Î ¸¸µé¾îÁØ´Ù.
µû¶ó¼­ ³»ºÎ JSON°´Ã¼¸¦ inner·Î ¼±¾ðÇØÁÖ°í, ³»ºÎ¿¡ ÀÖ´ø professor¿Í studentÀÇ Á¤º¸¸¦ inner¿¡ ³Ö¾îÁØ´Ù. 
±×¸®°í ¿ÜºÎ JSON°´Ã¼¸¦ outer·Î ¼±¾ðÇÏ°í, outer¿¡ univ¿¡ inner¸¦ ÇÑ ½ÖÀ¸·Î ³Ö¾îÁØ´Ù.
¿©±â¼­ ¾Ë ¼ö ÀÖµíÀÌ JSON°´Ã¼´Â ¸»±×´ë·Î ObjectŸÀÔ°ú À¯»çÇÑ °´Ã¼À̱⠶§¹®¿¡  key¿Í value¿¡´Â String, int µîÀ» Æ÷ÇÔÇÏ¿© °´Ã¼µé ±îÁöµµ ÀúÀåÀÌ °¡´ÉÇÏ´Ù.(Á¦³Ê¸¯½º´Â »ç¿ë ºÒ°¡)
ÀÌ·¸°Ô ¸¸µé¾îÁø outer¶ó´Â ÃÖÁ¾ °á°ú¹°À» .toJSONString()À» ÅëÇØ String ŸÀÔÀ¸·Î ij½ºÆà ÈÄ json¿¡ ÀúÀåÇØÁØ´Ù.(°á±¹ json¿¡ ÀúÀåµÈ Á¤º¸°¡ ÃÖÁ¾ ÆÄ½Ì ´ë»óÀÌ µÇ¹Ç·Î ¹Ýµå½Ã ÇÊ¿äÇÑ °úÁ¤ÀÌ´Ù.)

ÀÌÁ¦ ÀÌ·¸°Ô JSONÀ» ¸¸µå´Â Ŭ·¡½º¸¦ ¸ÞÀθ޼ҵ忡¼­ È£ÃâÇغ¸¸é Ãâ·ÂÀÌ ´ÙÀ½°ú °°ÀÌ µÈ´Ù.

À§¿¡¼­ º¸¾Ò´ø ¿¹Á¦ ±×´ë·ÎÀÌ´Ù.
ÀÌÁ¦ ÀÌ·¸°Ô ¸¸µé¾îÁø JSON°´Ã¼¸¦ ÆĽÌÇÏ¿© professor¿Í studentÀÇ Á¤º¸¸¸ °¡Á®¿Í º¸µµ·Ï ÇÏ°Ú´Ù.

¸ÞÀθ޼ҵ忡¼­ ¸ÕÀú Exception󸮸¦ ÇØÁØ´Ù. ÆĽ̰úÁ¤¿¡¼­ ´ç¿¬È÷ À߸ø ºÒ·¯¿Ã ¼öµµ ÀÖ°í ÀÌ´Â, ·±Å¸ÀÓ¿¡·¯¿Í °°Àº unchecked error°¡ ¾Æ´Ñ º°µµ ¿¹¿Ü󸮰¡ ÇÊ¿äÇÑ checked errorÀ̹ǷΠthrows ParseExceptionÀ̳ª try...catch¸¦ ÇØÁØ´Ù.

public class Main{ public static void main(String[] args) throws ParseException { JSONAdd jsonAdd = new JSONAdd(); jsonAdd.jsonadd(); //ÀÌÀü¿¡ ¸¸µç JSONÃß°¡ Ŭ·¡½º¸¦ ºÒ·¯¿È } }

¿©±â±îÁöÇؼ­ ±âº» °úÁ¤ÀÌ ³¡³µÀ¸¸é ÀÌÁ¦ JSONParser parser = new JSONParser();¸¦ ¼±¾ðÇÏ¿© ÆÄ½Ì ÀÛ¾÷À» ÇÏ´Â °´Ã¼¸¦ ¸¸µé¾îÁØ´Ù.

JSONParser parser = new JSONParser();

ÀÌÁ¦ String jsonÀ» Àú parser¸¦ ÅëÇØ ÆĽ̹ÞÀº µÚ, JSON¿ÀºêÁ§Æ® ÇüÅ·ΠÀúÀåÇÑ´Ù.

JSONObject obj = (JSONObject)parser.parse(jsonAdd.json);

¿©±â¼­ obj°´Ã¼´Â °á±¹ À§ÀÇ ³»¿ë Àüü¸¦ ÆĽÌÇÑ °á°ú¸¦ ´ã°í ÀÖ´Â °ÍÀÌ´Ù. ¿©±â¼± ÀüºÎ¶ó ÇغÃÀÚ outer¿Í outer³»ºÎÀÇ inner¹Û¿¡ ¾øÀ¸´Ï °á±¹ obj = outer¿Í °°Àº »óÅÂÀÌ´Ù.

±×·³ ÀÌ·¸°Ô obj¿¡ ´ã±ä Àüü Á¤º¸ Áß ¸ÕÀú univ¿¡ Á¢±ÙÇÏ¿© µ¥ÀÌÅ͸¦ ¹Þ¾Æ¿Â´Ù.

JSONObject univ = (JSONObject)obj.get("univ");

obj°¡ °á±¹ outer¶ó°í ÇßÀ¸´Ï outer³»ºÎ¿¡´Â univ : {...} ÀÌ·± ½ÄÀ¸·Î Á¤º¸µéÀÌ ´ã°ÜÀÖ´Â »óÅÂÀÌ´Ù. ¿ì¸®´Â ¿©±â¼­ univ¶ó´Â »õ·Î¿î univ¶ó´Â JSON°´Ã¼¸¦ ¼±¾ðÇÏ°í, obj¿¡¼­ "univ"¶ó´Â key¿Í ÀÏÄ¡ÇÏ´Â Á¤º¸¸¦ ¹Þ¾Æ¿Í JSON¿ÀºêÁ§Æ®·Î Çüº¯È¯ ÈÄ Á÷Àü¿¡ ¼±¾ðÇÑ univ¶ó´Â °´Ã¼¿¡ ´ã¾ÆÁØ´Ù.

»ç½Ç JSON»ý¼º Ŭ·¡½ºÀÇ ³»¿ëµé°ú À̸§ÀÌ Áߺ¹À̶ó Çò°¥¸± ¼öµµ ÀÖÁö¸¸, ÀϹÝÀûÀ¸·Î JSONÆĽÌÀ» ÁøÇàÇÒ ¶©, À¥¿¡¼­ ¹Þ¾Æ¿À±â ¶§¹®¿¡ ÀÌ·±½ÄÀ¸·Î À̸§À» °°ÀÌ ÇØÁÖ´Â°Ô ¿ÀÈ÷·Á ´õ ¾Ë¾Æº¸±â ½±´Ù.
ÀÌÁ¦ ±×·¯¸é Á¦´ë·Î univ¿¡ ³»¿ëµéÀÌ ´ã°ÜÀÖ´ÂÁö Ãâ·ÂÇؼ­ È®ÀÎÇØ º¸¸é ¾Æ·¡¿Í °°´Ù.

System.out.println(univ.toJSONString());

Àß ´ã°ÜÀÖ´Ù. ÀÌ·±½ÄÀ¸·Î Ãâ·Â¹®À» ÅëÇØ È®ÀÎÀ» ¼ö½Ã·Î ÇØÁÖ¸é ²¿ÀÌ´Â ÀÏÀÌ ÁÙ¾îµç´Ù.

±×·¯¸é ÀÌÁ¨ univ°´Ã¼¿¡ Á¢±ÙÇÏ¿© professor¿Í student Á¤º¸¸¦ ÆĽÌÇؿ´Ù.

String professor = (String)univ.get("professor"); String student = (String)univ.get("student");

Àú µÑÀº " "·Î ¹­ÀÎ ¹®ÀÚ¿­, Áï StringÀ̱⠶§¹®¿¡ (String)À» ÅëÇØ Çüº¯È¯ ÇÏ¿´´Ù. ´Ù½Ã Çѹø ¾ê±âÇÏÁö¸¸ JSONObjectÀÎ ObjectÇüÅ·ΠÀúÀåµÈ °ÍÀ̱⠶§¹®¿¡ ¿øº»¿¡ ¸Â´Â ŸÀÔÀ¸·Î Çüº¯È¯À» ÇØÁÖ¾î¾ß ÇÑ´Ù.

ÀÌÁ¦ ÀÌ·¸°Ô ³ª¿Â °á°úµéÀÌ Á¦´ë·Î µÈ °ÍÀÌ ¸Â´ÂÁö Ãâ·ÂÀ» Çغ¸ÀÚ

System.out.println("±³¼ö : "+professor); System.out.println("Çлý : "+student);

Àß Ãâ·ÂµÈ´Ù. ÄÚµå Àü¹®Àº ¾Æ·¡¿Í °°´Ù.

ÄÚµå ±¸¼º : 

import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException; class JSONAdd{ String json; void jsonadd(){ JSONObject inner = new JSONObject(); inner.put("professor", "±è±³¼ö"); inner.put("student", "ÀÌÇлý"); JSONObject outer = new JSONObject(); outer.put("univ", inner); json = outer.toJSONString(); //System.out.println(json); } } public class Main{ public static void main(String[] args) throws ParseException { JSONAdd jsonAdd = new JSONAdd(); jsonAdd.jsonadd(); JSONParser parser = new JSONParser(); JSONObject obj = (JSONObject)parser.parse(jsonAdd.json); //System.out.println(obj.toJSONString()); JSONObject univ = (JSONObject)obj.get("univ"); //System.out.println(univ.toJSONString()); String professor = (String)univ.get("professor"); String student = (String)univ.get("student"); System.out.println("±³¼ö : "+professor); System.out.println("Çлý : "+student); } }

°£´ÜÇÏ°Ô Á¤¸®Çϸé ÀÌ·¸´Ù.

¿©±â±îÁö Çؼ­ JSON´Ù¿î·Îµå ¹æ¹ý°ú JSONÀÇ ±¸Á¶, ÆÄ½Ì ¹æ¹ý¿¡ ´ëÇØ ¾Ë¾Æº¸¾Ò´Ù. À̸¦ °è¼Ó ¹Ýº¹ÇÏ¿© Àͼ÷ÇÏ°Ô ÇÏ±æ ¹Ù¶õ´Ù. ´ÙÀ½¹ø¿¡´Â JSONArray¿¡ ´ëÇØ ¾Ë¾Æº¸µµ·Ï ÇÏ°Ú´Ù.