1. JSON 이란?


JSON 에 대한 설명은 공식 홈페이지나 위키에 가서 확인하는게 빠를거 같습니다.


JSON 공식 홈페이지 : http://www.json.org


아래 개요 사이트에 가면 친절하게 한국어로 적혀있습니다.


JSON 개요 : http://www.json.org/json-ko.html


JSON (JavaScript Object Notation)은 경량의 DATA-교환 형식이다. 이 형식은 사람이 읽고


 쓰기에 용이하며, 기계가 분석하고 생성함에도 용이하다. JavaScript Programming 


Language, Standard ECMA-262 3rd Edition - December 1999의 일부에 토대를 두고 있다.


 JSON은 완벽하게 언어로 부터 독립적이지만 C-family 언어 - C, C++, C#, Java, JavaScript, 


Perl, Python 그외 다수 - 의 프로그래머들에게 친숙한 관습을 사용하는 텍스트 형식이다. 이


러한 속성들이 JSON을 이상적인 DATA-교환 언어로 만들고 있다.


간추려서 말하면, JSON을 지원하는 여러 다양한 언어(C, C++, C#, Java, PHP, Javascript 등...)에서 자료를 쉽게 주고 받을 수 있다고 볼 수 있습니다.

 

 2. Java - JSON

 

JSON 은 바로 사용하지 못하고 언어에 맞게 별도의 컴파일 과정을 거친 후, 사용할 수 있습니다.

C 의 경우 컴파일 후에 필요한 파일들 복사하고 헤더 파일을 등록 후에 사용하는 것 처럼, Java 에서도 제공된 라이브러리를 통해서 간단하게 사용할 수 있습니다.

 

 3. json-simple 로 json 사용하기

 

사전에 TCP, UDP 통신등으로 데이터를 주고 받을 수 있도록 구현이 된 상태에서 진행하도록 합니다.

 

먼저 데이터를 넣는 방법입니다.

아래와 같이 JSONObject를 선언한 다음에 put을 통해서 데이터를 집어 넣어 줍니다.


JSONObject obj;

obj = new JSONObject();

obj.put("key1", "value1");
obj.put("key2", "value2");

 

위와 같이 만들어진 obj를 통신을 사용해서 보내고자 하는 곳으로 넘겨주면 됩니다.

 

받게 되는 곳에서는 위의 obj를 받게 됩니다.

이 때, 받은 자료를 value 라는 String 에 저장을 했습니다.

 

받은 데이터를 JSON 문법으로 해석합니다.

그 다음 get을 통해서 키를 입력하면 값을 받을 수 있습니다.



JSONObject jsonObj;
jsonObj = (JSONObject) JSONValue.parse(value);

String tmp;
tmp = (String) jsonObj.get("key2");

system.out.println(tmp);


위와 같이 했을 때, tmp 는 value2 라는 값을 가지게 됩니다.



JSON.parse 함수(JavaScript)


JSON(JavaScript Object Notation) 문자열을 개체로 변환합니다.
JSON.parse(text [, reviver])
text

필수 요소. 유효한 JSON 문자열입니다.

reviver

선택 사항입니다. 결과를 변환하는 함수입니다. 이 함수는 개체의 각 멤버에 대해 호출됩니다. 멤버에 중첩된 개체가 포함되어 있으면 중첩된 개체가 부모 개체보다 먼저 변환됩니다. 멤버 각각에 대해 다음이 발생합니다.

  • reviver에서 유효한 값을 반환하면 멤버 값은 변환된 값으로 바뀝니다.

  • reviver에서 수신한 값과 동일한 값을 반환하면 멤버 값은 수정되지 않습니다.

  • reviver가 null 또는 undefined를 반환하면 멤버가 삭제됩니다.

개체 또는 배열입니다.

이 함수로 JavaScript 구문 분석 오류("SCRIPT1014: 잘못된 문자입니다.")가 발생되면 입력 테스트는 JSON 구문을 따르지 않습니다. 오류를 수정하려면 다음 중 하나를 수행합니다.

  • text 인수를 수정하여 JSON 구문을 따르도록 합니다. 자세한 내용은 JSON 개체의 BNF 구문 주석을 참조하세요.

  • 텍스트 인수가 JSON.stringify와 같은 JSON 준수 구현으로 serialize되는지 확인합니다.

다음 예제에서는 JSON.parse를 사용하여 JSON 문자열을 개체로 변환합니다.

var jsontext = '{"firstname":"Jesper","surname":"Aaberg","phone":["555-0100","555-0120"]}';
var contact = JSON.parse(jsontext);
document.write(contact.surname + ", " + contact.firstname);

// Output: Aaberg, Jesper

다음 예제에서는 JSON.stringify를 사용하여 배열을 JSON 문자열로 변환한 다음 JSON.parse를 사용하여 문자열을 배열로 변환하는 방법을 보여 줍니다.

var arr = ["a", "b", "c"];
var str = JSON.stringify(arr);
document.write(str);
document.write ("<br/>");

var newArr = JSON.parse(str);

while (newArr.length > 0) {
    document.write(newArr.pop() + "<br/>");
}

// Output:
var arr = ["a", "b", "c"];
var str = JSON.stringify(arr);
document.write(str);
document.write ("<br/>");

var newArr = JSON.parse(str);

while (newArr.length > 0) {
    document.write(newArr.pop + "<br/>");
}

// Output:
["a","b","c"]
c
b
a

reviver 함수는 ISO(International Organization for Standardization) 날짜 문자열의 JSON 표현을 UTC(협정 세계 표준시) 형식 Date 개체로 변환하는데 흔히 사용됩니다.

이 예제에서는 JSON.parse를 사용하여 ISO 형식 날짜 문자열을 deserialize합니다. dateReviver 함수는 ISO 날짜 문자열처럼 형식이 지정된 멤버의 Date 개체를 반환합니다.

var jsontext = '{ "hiredate": "2008-01-01T12:00:00Z", "birthdate": "2008-12-25T12:00:00Z" }';
var dates = JSON.parse(jsontext, dateReviver);
document.write(dates.birthdate.toUTCString());

function dateReviver(key, value) {
    var a;
    if (typeof value === 'string') {
        a = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
        if (a) {
            return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],
                            +a[5], +a[6]));
        }
    }
    return value;
};

// Output:
// Thu, 25 Dec 2008 12:00:00 UTC


요구 사항

지원되는 문서 모드: Internet Explorer 8 표준, Internet Explorer 9 표준, Internet Explorer 10 표준. Windows 스토어 응용 프로그램에서도 지원됩니다. 버전 정보를 참조하십시오.

지원되지 않는 문서 모드: Quirks, Internet Explorer 6 표준, Internet Explorer 7 표준




min




'학습 > 용어정리' 카테고리의 다른 글

안드로이드 NFC 기본 기능 (NFC Basic)  (0) 2013.07.18
MVC  (0) 2013.07.04
RequestJS  (0) 2013.07.04
by 알 수 없는 사용자 2013. 7. 4. 19:35