json Data 파싱하여 데이터 받기

HI·2022년 10월 12일
0

파싱할 jsonData

{
 "addr":"Seoul-Citry",
 "s":"won",
 "r":[
   {
    "i":4198942,
    "n":1,
    "s":100,
    "name":"tom"
   },
   {
    "i":1281641,
    "n":2,
    "s":100,
    "name":"Kim"
   }
 ],
 "g":[
   {
    "i":123,
    "n":112,
    "s":200,
    "number":"010-0000"
   },
   {
    "number":"012-1234"
   }
 ]
}
  • 필요 라이브러리 : json-simple-1.1.1.jar

1. 배열값과 싱글값 함께 있는 jsonData 받기

package com;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

import org.json.simple.*;
import org.json.simple.parser.*;


public class BqJsonData {

	public static void main(String[] args) throws Exception{
		// TODO Auto-generated method stub
		String txtname = "./search_skeylist";
		String result = "";
		StringBuilder jsonData = new StringBuilder();
		StringBuilder list = new StringBuilder();
		
		try {
			BufferedReader br = new BufferedReader(new FileReader(new File(txtname)));
			
			while((result = br.readLine()) != null){
				jsonData.append(result);
			}
		}
		
		catch(FileNotFoundException e){
			e.printStackTrace();
		}catch(IOException e) {
			e.printStackTrace();
		}
		try {
			// 1. JSONParse 생성
			JSONParser jsonParse = new JSONParser();
			// 2. Object 생성. (json데이터 담음)
			Object obj = jsonParse.parse(jsonData.toString()); 
			//json Object
			// 3. JSONObject 생성
			JSONObject jsonMain = (JSONObject)obj;
			// **싱글값 jsonData출력
			// 싱글값은 Object -> JSONObject 에서 바로 get.
			System.out.println(jsonMain.get("addr").toString());  
			System.out.println(jsonMain.get("s").toString());  
			
			//배열값은 Object-> JSONObject -> JSONArray로 다시 담아줘야함.
			//사용할 json배열 선택.
			JSONArray ListArray = (JSONArray) jsonMain.get("g"); //배열로 만듬.

			// **배열값 jsonData 출력
			if (ListArray.size() > 0){
				for(int i=0; i<ListArray.size(); i++) {
					JSONObject ListObject = (JSONObject) ListArray.get(i);
					list.append("\""+ListObject.get("number").toString()+"\",\n");
				}
			}
		}catch(ParseException e) {
			e.printStackTrace();
		}
		list.setLength(list.length()-2);
		System.out.println(list);
		
	}

}

2. 싱글값 jsonData 받기

단건의 json객체면 바로 JSONObject에 담고 get하여 받는다.

참고 https://studyingazae.tistory.com/196

profile
hi

0개의 댓글