<Json>

 

 

 

- 중간데이터 (공용어) 이다.

 

- c언어, 파이썬으로 만든 데이터를 그대로 받으면 java에서 알아들을 수가 없기 때문에 공용어인 Json으로 바꿔서 전송하면 각자의 언어로 다시 바꿀 수 있다.

 

 

- Json의 기본 자료형

 

1. 수 : 정수, 실수 다 가능하다.

 

2. 문자열(String)

 

3. 참 / 거짓 (Boolean)

 

4. 배열 (Array)

 

5. 객체(Object)

 

6. null

 

 

 

package ch08;

import com.google.gson.Gson;

class Family{
	int 샵 =  2;
	String 아버지 = "홍판서";
	String 어머니 = "춘섬";
}

class Person {
	String 이름 = "홍길동";
	int 나이 = 25;
	String 성별 = "여";
	String 주소 =  "서울특별시 양천구 목동";
	String[] 특기 = {"농구", "도술"};
	Family 가족관계 = new Family();
	String 회사 = "경기 수원시 팔달구 우만동";
}

public class JsonEx01 {

	public static void main(String[] args) {
		Gson gson = new Gson();
		// fromJson() 함수 : Json을 java object로 변환 
		// toJson() 함수 : java object를 json(String)으로 변환
		String personJson = gson.toJson(new Person());
		System.out.println(personJson);
	}

}

 

 

- 통신으로 부터 들어오는 데이터는 무조건 String 타입으로 들어온다.

 

 

 

 

package gsontest;

import com.google.gson.Gson;

public class JsonEx02 {

	public static void main(String[] args) {
		String jsonPerson = "{\"이름\":\"홍길동\",\"나이\":25,\"성별\":\"여\",\"주소\":\"서울특별시 양천구 목동\",\"특기\":[\"농구\",\"도술\"],\"가족관계\":{\"샵\":2,\"아버지\":\"홍판서\",\"어머니\":\"춘섬\"},\"회사\":\"경기 수원시 팔달구 우만동\"}\r\n" + 
				"";
		
		Gson gson = new Gson();
	}

}

 

 

 

 

- 데이터의 이름도 문자열이므로, 항상 큰따옴표("")와 함께 입력해야 한다.

 

 

 

 

 

package gsontest;

import com.google.gson.Gson;
import java.util.HashMap;
import java.util.Map;

class People {

	private String name;
	private Integer age;
	private Map<String, Object> additionalProperties = new HashMap<String, Object>();

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Integer getAge() {
		return age;
	}

	public void setAge(Integer age) {
		this.age = age;
	}

	public Map<String, Object> getAdditionalProperties() {
		return this.additionalProperties;
	}

	public void setAdditionalProperty(String name, Object value) {
		this.additionalProperties.put(name, value);
	}

}

public class GsonEx03 {

	public static void main(String[] args) {
		// 1. 다운 받은 json 데이터
		String jsonData = "{\"name\":\"코스\", \"age\": 40}";
		System.out.println(jsonData);

		// 2. json 데이터 -> java 오브젝트 변환
		Gson gson = new Gson();
		People people = gson.fromJson(jsonData,  People.class);
		System.out.println(people.getName());
		System.out.println(people.getAge());
	}

}

 

 

json 데이터 양식을 java 데이터로 편하게 변환하기 위해서

 

 

- 이 사이트에 붙여넣고 Preview 하면 변환된 값이 나온다.

 

 

- 값 복사 붙여넣기 후 결과값 확인 

 

 

 

 

 

 


다시 한번 정리

 



1. BufferedReader

InputStream(문자 X, 바이트) + InputStreamReader(문자 O, 가변 X) 결합해서 사용


2. JSON

통신을 위한 중간데이터

데이터가 JSON으로 들어오기 때문에 자바 오브젝트로 변경해줘야함

이를 위해서 GSON이 필요


송신 : 자바 오브젝트 --> JSON (gson.toJson())

수신 : JSON(string 타입 : BufferedReader로 읽기 때문에 문자열) --> 자바 오브젝`트 (gson.fromJson())

gson.fromJson()에 담을때 jsonschema2에서 원형이 필요

openclose