Java에서 JSON 배열 다루기
JSON은 개발자와 조직 사이에서 널리 사용되는 널리 사용되는 데이터 교환 형식입니다. JSON이라는 용어는 JavaScript Object Notation을 나타냅니다.
사람이 읽을 수 있는 형식으로 데이터 교환을 용이하게 하도록 특별히 설계된 가볍고 읽기 가능한 텍스트 기반 프레임워크입니다. JSON은 특별한 요구 사항 없이 어디서나 사용할 수 있는 개방형 표준 형식입니다.
또한 JSON은 대부분의 프로그래밍 언어에서 지원됩니다. 데이터 교환이 필요한 프로젝트 개발자로 일한 적이 있다면 JSON을 접했을 수 있습니다.
예를 들어, 우리는 종종 JSON 객체를 사용하여 서버에서 모바일 애플리케이션으로 또는 그 반대로 데이터를 전송합니다. 이 기사에서는 JSON 구조, 데이터 유형, JSON 객체, JSON 배열 등과 같은 JSON 기본 사항을 이해합니다.
또한 Java에서 JSON으로 작업하는 방법도 이해할 것입니다. 마지막으로 이 기사에서는 Java에서 JSON을 처리하는 예제 코드를 제공합니다.
Java에서 JSON 배열 다루기
JSON은 객체와 데이터 유형을 사용하여 정보를 만들고 공유하는 매우 유연하고 가벼운 정보 공유 프레임워크입니다.
JSON에서 데이터는 키가 특히 문자열인 키-값 쌍으로 표현되는 반면 값은 JSON에서 지원하는 모든 데이터 유형이 될 수 있습니다.
JSON은 다음 데이터 유형을 지원합니다.
- 문자열
- 번호
- 부울
- 널
이러한 기본 JSON 데이터 유형 외에도 JSON 배열 및 JSON 객체를 키-값 쌍의 값으로 사용할 수도 있습니다.
또한 이 기사에서는 배열과 객체에 대해 더 자세히 알아볼 것입니다. 그러나 그 전에 JSON의 기능을 살펴보겠습니다.
JSON의 뛰어난 기능 중 일부는 다음과 같습니다.
- JSON은 매우 간단합니다. JSON을 이해하고 사용하기 위해 추가 노력을 기울일 필요가 없습니다.
- JSON은 이해하기 쉽고 자체 설명적입니다. JSON 개체를 보면 전달하려는 내용을 쉽게 이해할 수 있습니다.
- JSON은 언어 독립적입니다. 이 기능은 JSON이 널리 수용되는 주요 요인임이 입증되었습니다. 라이브러리와 간단한 코드의 도움으로 거의 모든 언어로 JSON으로 작업할 수 있습니다.
- JSON은 XML보다 빠릅니다. 널리 사용하는 또 다른 이유입니다.
Java의 JSON 객체 및 JSON 배열
Java에서 JSON 객체와 배열을 사용하는 방법을 배우기 전에 JSON 객체와 JSON 배열을 이해해야 합니다.
JSON 객체는 데이터가 키-값 쌍으로 저장되는 사전 데이터 유형과 매우 유사합니다. 이 키-값 쌍의 키는 문자열이어야 하며 값은 개체, 배열 또는 기타 지원되는 데이터 유형일 수 있습니다.
키와 값은 콜론 :
으로, 각 키-값 쌍은 쉼표 ,
로 구분해야 합니다. JSON 객체는 중괄호 {}
를 사용하여 표시됩니다.
JSON 객체에 객체와 배열을 중첩하여 임의로 복잡한 JSON 객체를 만들 수 있습니다. 계층적 JSON 객체라고 합니다.
다음은 학생의 세부 정보를 나타내는 JSON 개체의 예입니다.
{"name": "Roger", "Roll": 22, "Class": "XI"}
문자열 값은 이중 변환된 쉼표로 인용했지만 숫자는 인용할 필요가 없습니다.
우리는 사전과 유사한 JSON 객체에 대해 방금 논의했습니다. 반면 JSON 배열은 목록과 유사합니다.
목록에서 대괄호 []
로 개체를 묶습니다. JSON 배열은 다른 배열이나 JSON 객체를 포함하여 지원되는 모든 데이터 유형을 포함할 수 있습니다.
다음은 JSON 배열의 예입니다.
[1, "abc", {"name":"xyz"}]
위의 JSON 배열에는 숫자, 문자열 및 개체가 포함되어 있습니다. 이는 배열에 다양한 데이터 유형을 저장할 수 있음을 의미합니다.
Java의 내장 라이브러리를 사용하여 Java에서 JSON 배열 읽기
Java는 많은 수의 라이브러리가 있는 강력한 언어입니다. 운 좋게도 Java에서 JSON 객체와 배열을 읽을 수 있는 내장 라이브러리가 있습니다.
이러한 라이브러리는 작업을 용이하게 하고 JSON 개체 및 배열을 구문 분석하고 읽는 것을 간단하게 만듭니다. 이 기사의 추가 내용에서는 코드에서 이러한 라이브러리를 사용하여 Java에서 JSON 개체 및 JSON 배열을 읽는 방법을 배웁니다.
코드를 진행하기 전에 JSON 객체를 만들어 파일에 저장합니다. JSON 파일의 확장자는 .json
입니다.
따라서 코드를 테스트하고 실행하려면 다음 JSON 코드를 복사하여 붙여넣고 .json
확장자를 가진 파일을 원하는 위치에 저장합니다. JSON 코드는 아래와 같습니다.
[{
"name":"MMN",
"roll": 24,
"marks": [91, 95, 97, 97, 94],
"parents": {
"name": "IMT",
"mobile":"1234567890"
},
"hobbies": ["sports", "reading", "music"],
"others": ["A", 1]
}]
이 JSON 파일에는 단일 JSON 객체가 있는 JSON 배열이 포함되어 있습니다. 그러면 이 내부 JSON 객체에는 데이터 유형이 다른 여러 키-값 쌍이 포함됩니다.
예를 들어 name
은 문자열, roll
은 정수(JSON은 정수를 긴 정수로 저장), marks
는 JSON 배열, parents
는 또 다른 JSON 개체 등입니다. 따라서 이것은 임의의 복잡한 JSON 데이터의 예입니다.
Java를 사용하여 이러한 JSON 객체를 읽는 방법을 이해합시다.
코드를 작성하기 전에 JSON jar 파일을 다운로드하고 해당 JSON 파일을 가리키는 classpath
변수를 추가했는지 확인해야 합니다. 이렇게 하지 않으면 JSON이 컴파일되지 않습니다.
기본적으로 File()
생성자를 사용하여 Java에서 다른 파일을 여는 것과 같은 방식으로 JSON 파일을 열 수 있습니다.
생성자가 던지는 필수 예외를 처리하려면 파일 열기 문을 try-catch
블록으로 묶어야 합니다.
파일이 열리면 해당 객체가 FileReader()
생성자로 전달됩니다.
우리는 JSON 콘텐츠를 구문 분석하기 위해 Java 객체를 반환하는 JSON 구문 분석기를 사용합니다. 명시적 캐스트를 사용하여 JSON 배열을 캐스트해야 합니다.
JSON 배열에는 단일 객체가 포함되어 있지만 경우에 따라 JSON 배열에 여러 JSON 객체가 있을 수 있으므로 루프를 사용하여 구문 분석된 배열을 탐색해야 합니다. 구문 분석된 JSON 배열에서 각 JSON 개체를 추출하고 추가 처리합니다.
키를 사용하여 JSON 개체의 값을 추출해야 하기 때문에 반복하는 JSON 개체 구조를 알아야 합니다.
또한 명명된 키를 사용하는 함수에 전달하여 JSON 개체에서 데이터를 추출합니다. JSON Object는 서로 다른 데이터 유형을 포함하므로 각각에 따라 처리할 수 있습니다.
예를 들어 정수, 문자열 및 배열을 표시했지만 중첩된 JSON 개체 parents
를 반복했습니다. 다음 코드는 설명된 논리를 구현합니다.
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.*;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
public class JSONReader {
public static void main(String[] args) {
JSONParser parser = new JSONParser();
FileReader fileReader;
try {
File file = new File("/home/stark/eclipse-workspace-java/Aditya/src/data.json");
fileReader = new FileReader(file);
// Parser returns an object, we need an explicit cast to covert it into a JSONArray
JSONArray array = (JSONArray) parser.parse(fileReader);
// Traverse the list
for (int i = 0; i < array.size(); i++) {
JSONObject obj = (JSONObject) array.get(i);
parseObject(obj);
}
}
catch (FileNotFoundException e) {
System.out.println(e.getStackTrace() + " :File Not Found");
} catch (ParseException e) {
System.out.println(e.getStackTrace() + " :Could not parse");
} catch (IOException e) {
System.out.println(e.getStackTrace() + " :IOException");
}
}
private static void parseObject(JSONObject obj) {
String name = (String) obj.get("name");
long roll = (long) obj.get("roll");
JSONArray marks = (JSONArray) obj.get("marks");
JSONArray hobbies = (JSONArray) obj.get("hobbies");
JSONObject parents = (JSONObject) obj.get("parents");
JSONArray others = (JSONArray) obj.get("others");
System.out.println("Name: " + name);
System.out.println("Roll: " + roll);
System.out.println("Marks: " + marks);
System.out.println("Hobbies: " + hobbies);
System.out.println(
"Parent's Name: " + parents.get("name") + ", Mobile: " + parents.get("mobile"));
System.out.println("Others: " + others);
}
}
File()
생성자에서 파일의 올바른 경로를 지정해야 합니다. 위 코드의 출력은 아래와 같습니다.
Name: MMN
Roll: 24
Marks: [91,95,97,97,94]
Hobbies: ["sports","reading","music"]
Parent's Name: IMT, Mobile: 1234567890
Others: ["A",1]
결론
Java는 널리 사용되는 프로그래밍 언어이며 종종 데이터 교환이 필요한 상황을 접하게 됩니다. 다른 데이터 교환 형식이 존재하지만 JSON은 가장 인기 있고 쉽고 이해하기 쉬운 형식 중 하나입니다.
Java에서 JSON 형식, 데이터 유형 및 구문 분석된 JSON 파일을 배웠습니다. JSON은 임의의 JSON 데이터를 교환할 수 있도록 하는 임의의 복잡한 구조를 가질 수 있습니다.
반면에 Java는 JSON을 처리하는 간단하고 고유하지만 강력한 방법을 제공합니다.