JSONobject 를 사용 하여 json 을 생 성하 고 해석 하 는 방법

1.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 를 사용 하여 제 이 슨 을 생 성하 고 해석 하 는 방법 은 바로 편집장 이 여러분 에 게 공유 한 모든 내용 입 니 다.여러분 에 게 참고 가 되 고 저희 도 많이 응원 해 주시 기 바 랍 니 다.

좋은 웹페이지 즐겨찾기