728x90
JSON
= JavaScript Object Notation
JSON은 좀 더 쉽게 데이터를 교환하고 저장하기 위하여 만들어진 텍스트 기반의 데이터 교환 표준
이러한 JSON은 XML의 대안으로서 좀 더 쉽게 데이터를 교환하고 저장하기 위하여 고안됨
또한, JSON은 텍스트 기반이므로 어떠한 프로그래밍 언어에서도 JSON 데이터를 읽고 사용이 가능
특징
- JS를 확장하여 만들어짐
- JS 객체 표기법을 팔로우함
- 사람과 기계가 모두 읽기 편하게
- 프로그래밍 언너와 운영체제가 독립적
XML을 쓰지않고 JSON을 쓰는이유
객체 표현
String str="홍길동,서울,010-1111-1111#김길동,서울,010-2222-2222"
xml파일형식 ) <name>홍길동</name>
<addr>
<tel>
처리는 쉬우나 용량이 커짐
그래서 나온것이 JSON
json) [{'name':'홍길동','addr':'seoul', 'tel':'...'}]
gson
cf) JSON은 주석을 사용하지 않음!
기본구조
package kr.bit;
public class FoodDTO {
private String name;
private int price;
private String rest;
public FoodDTO() {}
public FoodDTO(String name, int price, String rest){
this.name=name;
this.price=price;
this.rest=rest;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public String getRest() {
return rest;
}
public void setRest(String rest) {
this.rest = rest;
}
@Override
public String toString(){
return "FoodDTO[name=" +name+ ", price=" +price+ ", rest=" +rest+ "]";
}
}
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import kr.bit.FoodDTO;
import java.util.ArrayList;
import java.util.List;
public class test {
public static void main(String[] args) {
new test();
// object => json(String)
FoodDTO dto = new FoodDTO("김밥", 7000, "a");
Gson g = new Gson();
String str = g.toJson(dto);
System.out.println(str);
// json => object(java)
FoodDTO dto1 = g.fromJson(str, FoodDTO.class);
System.out.println(dto1);
System.out.println(dto1.getName());
System.out.println(dto1.getPrice());
System.out.println(dto1.getRest());
List<FoodDTO> li = new ArrayList<FoodDTO>();
li.add(new FoodDTO("김밥", 7000, "a"));
li.add(new FoodDTO("우동", 8000, "b"));
li.add(new FoodDTO("라면", 8000, "c"));
String str2 = g.toJson(li);
System.out.println(str2);
//json => list 객체
List<FoodDTO> li2 = g.fromJson(str2, new TypeToken<List<FoodDTO>>() {
}.getType());
for (FoodDTO fo : li2) {
System.out.println(fo);
}
//json : [{aaa:123}, {bb:344}];
//gson : java객체를 json으로 변환
// json을 java객체로 변환
}
}
Insert JsonObject in JsonArray
import org.json.JSONArray;
import org.json.JSONObject;
public class test2 {
public static void main(String[] args) {
JSONArray stu=new JSONArray(); // json이 들어있는 배열
JSONObject stu2 = new JSONObject();
stu2.put("name","홍길동");
stu2.put("tel","010-1111-2222");
stu2.put("adderess","seoul");
System.out.println(stu2);
stu.put(stu2);
System.out.println(stu);
}
}
JSON 파일 참조해서 GSON
package kr.bit;
import org.json.JSONArray;
import org.json.JSONObject;
import org.json.JSONTokener;
import java.io.InputStream;
public class test3 {
public static void main(String[] args) {
String str="inform.json";
InputStream is = test3.class.getResourceAsStream(str);
if(is==null){
throw new NullPointerException("cannot find file");
}
JSONTokener to = new JSONTokener(is);
JSONObject ob = new JSONObject(to);
JSONArray arr= ob.getJSONArray("student");
System.out.println(arr);
for(int i = 0; i<arr.length(); i++){
JSONObject stu= (JSONObject) arr.get(i);
System.out.println(stu.get("name")+"\t");
System.out.println(stu.get("address")+"\t");
System.out.println(stu.get("phone")+"\t");
}
}
}
{"student":[
{
"address":"seoul",
"phone": "010-1111-2222",
"name":"hong"
},
{
"address": "busan",
"phone":"010-6666-8777",
"name":"kim"
}
]}
728x90