JSONobject 를 사용 하여 json 을 생 성하 고 해석 하 는 방법
8257 단어 JSONObject생 성해석 하 다.json
유형
묘사 하 다.
Number
숫자 형
String
문자열 형
Boolean
불 형
Array
배열
Object
대상
null
빈 값
(1)json 에 서 는 정수,소수 등 유형 을 구분 하지 않 고 Number 를 통일 적 으로 사용 하여 숫자 를 저장 합 니 다.
(2)Array 는 배열 을 나타 내 고 중 괄호'[]'로 묶 으 며 요소 간 에 쉼표 로 구분 되 며 요 소 는 임 의 유형 이 될 수 있 습 니 다.
(3)Object 는 대상 을 C 언어 와 유사 한 구조 체 로 괄호'{}'로 묶 고 요 소 는 키 쌍 으로 요구 하 며,key 는 String 형식 이 어야 하 며,value 는 임의의 형식 으로 할 수 있 습 니 다.key 와 value 는":"로 맵 관 계 를 표시 하고 요소 간 에 도 쉼표 로 구 분 됩 니 다.
(4)String,Boolean,null 은 자바 와 마찬가지 로 더 이상 군말 하지 않 습 니 다.
2.json 구축
JSONobject 를 사용 하려 면 org.json 가방 을 참조 해 야 합 니 다.Maven 을 통 해 참조 하 는 것 을 추천 합 니 다.
따뜻 한 알림:저 는 Maven 프로젝트 를 구축 할 때 자주 만 드 는 데 실 패 했 습 니 다.인터넷 에서 오랫동안 찾 아 봤 지만 정 해 지지 않 았 습 니 다.나중에 과학 인터넷 으로 해결 되 었 습 니 다.만약 에 당신 도 만 드 는 데 실패 하면 시도 해 보 세 요.
2.1 직접 구축
JSONObject obj = new JSONObject();
obj.put(key, value);
직접 구축 하면 JSONobject 대상 을 직접 예화 한 다음 put()방법 으로 데 이 터 를 기록 합 니 다.put()방법의 첫 번 째 매개 변 수 는 key 값 이 고 String 형식 이 어야 합 니 다.두 번 째 매개 변 수 는 value 이 며 boolean,double,int,long,Object,Map 과 Collection 등 이 될 수 있 습 니 다.물론 double 과 int 등 유형 은 자바 에 만 있 고 json 에 기록 할 때 통일 은 Number 형식 으로 저 장 됩 니 다.범례:
import org.json.JSONObject;
public class JSONObjectSample {
public static void main(String[] args) {
createJson();
}
private static void createJson() {
JSONObject obj = new JSONObject();
obj.put("name", "John");
obj.put("sex", "male");
obj.put("age", 22);
obj.put("is_student", true);
obj.put("hobbies", new String[] {"hiking", "swimming"});
// toString()
System.out.println(obj.toString());
}
}
출력 결 과 는:
{"hobbies":["hiking","swimming"],"sex":"male","name":"John","is_student":true,"age":22}
보다 효율 적 인 전송 을 위해 제 이 슨 은 모든 빈 칸,줄 바 꾸 기 등 공백 부 호 를 모두 제거 한 것 을 볼 수 있다.그 내용 을 직접적 으로 보 려 면 온라인 json 해상도 기 를 사용 하여 볼 수 있 습 니 다.예 를 들 어:http://www.jsoneditoronline.org/2.2 HashMap 으로 구축
HashMap 을 사용 하여 json 을 구축 합 니 다.실제 적 으로 HashMap 대상 을 만 들 고 데 이 터 를 포장 한 다음 에 JSonobject 를 만 들 때 매개 변수 로 전달 합 니 다.
범례:
public class JSONObjectSample {
public static void main(String[] args) {
createJsonByMap();
}
private static void createJsonByMap() {
Map<String, Object> data = new HashMap<String, Object>();
data.put("name", "John");
data.put("sex", "male");
data.put("age", 22);
data.put("is_student", true);
data.put("hobbies", new String[] {"hiking", "swimming"});
JSONObject obj = new JSONObject(data);
System.out.println(obj.toString());
}
}
2.3 자바 빈 구축 사용앞의 두 가지 방법 에 비해 실제 개발 에서 자바 빈 을 응용 하여 json 을 구축 하 는 경우 가 더욱 흔 하 다.왜냐하면 이런 코드 의 중 용 률 이 더욱 높 기 때문이다.
범례:
JavaBean:
public class PersonInfo {
private String name;
private String sex;
private int age;
private boolean isStudent;
private String[] hobbies;
public void setName(String name) {
this.name = name;
}
public void setSex(String sex) {
this.sex = sex;
}
public void setAge(int age) {
this.age = age;
}
public void setStudent(boolean isStudent) {
this.isStudent = isStudent;
}
public void setHobbies(String[] hobbies) {
this.hobbies = hobbies;
}
//getter
public String getName() {
return name;
}
public String getSex() {
return sex;
}
public int getAge() {
return age;
}
public boolean isStudent() {
return isStudent;
}
public String[] getHobbies() {
return hobbies;
}
}
main:
import org.json.JSONObject;
public class JSONObjectSample {
public static void main(String[] args) {
createJsonByJavaBean();
}
private static void createJsonByJavaBean() {
PersonInfo info = new PersonInfo();
info.setName("John");
info.setSex("male");
info.setAge(22);
info.setStudent(true);
info.setHobbies(new String[] {"hiking", "swimming"});
JSONObject obj = new JSONObject(info);
System.out.println(obj);
}
}
주의해 야 할 것 은 자바 빈 은 getter 방법 이 있어 야 합 니 다.그렇지 않 으 면 저 장 된 데이터 에 접근 할 수 없습니다.3.json 해석
json 을 분석 하 는 것 은 주로 Number,boolean 등 기본 유형 과 배열 Array 입 니 다.
기본 형식의 해석 은 JSONobject 대상 의 getXxx(key)방법 을 직접 호출 하고 문자열 을 가 져 오 면 getString(key),불 값 은 getBoolean(key)으로 유추 합 니 다.
배열 의 해석 이 좀 번 거 롭 습 니 다.JSONobject 대상 의 getJSONarray(key)방법 으로 JSONarray 대상 을 가 져 오고 JSONarray 대상 의 get(i)방법 으로 배열 요 소 를 가 져 와 야 합 니 다.i 는 색인 값 입 니 다.
범례:
우선 프로젝트 디 렉 터 리'src/main/java'아래 json 파일 을 만들어 서 분석 에 사용 합 니 다.
demo.json:
{
"hobbies": [
"hiking",
"swimming"
],
"sex": "male",
"name": "John",
"is_student": true,
"age": 22
}
FileUtils 를 사용 하여 파일 에 접근 할 수 있 도록 pom.xml 에 comons-io 에 대한 의존 도 를 추가 합 니 다.
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.studying</groupId>
<artifactId>myjson</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>myjson</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20160810</version>
</dependency>
<!-- commons-io -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
</dependencies>
</project>
주 클래스:
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
import org.json.JSONArray;
import org.json.JSONObject;
public class JSONObjectSample {
public static void main(String[] args) throws IOException {
File file = new File("src/main/java/demo.json");
String content = FileUtils.readFileToString(file);
//
JSONObject obj = new JSONObject(content);
System.out.println("name:" + obj.getString("name"));
System.out.println("sex:" + obj.getString("sex"));
System.out.println("age" + obj.getInt("age"));
System.out.println("is_student" + obj.getBoolean("is_student"));
//
JSONArray hobbies = obj.getJSONArray("hobbies");
System.out.println("hobbies:");
for (int i = 0; i < hobbies.length(); i++) {
String s = (String) hobbies.get(i);
System.out.println(s);
}
}
}
이상 의 JSONobject 를 사용 하여 제 이 슨 을 생 성하 고 해석 하 는 방법 은 바로 편집장 이 여러분 에 게 공유 한 모든 내용 입 니 다.여러분 에 게 참고 가 되 고 저희 도 많이 응원 해 주시 기 바 랍 니 다.