JSONObjectを使ってjsonを生成して解析する方法


1.jsonデータタイプ
タイプ
説明
Number
デジタル
String
文字列型
ボロア
ブール型
Aray
行列
Object
オブジェクト
null
空の値
(1)Jsonでは整数、小数などを区別せず、統一的にNumberを使って数字を記憶する。
(2)配列は、括弧「[]」で囲まれ、要素間はカンマで区切られ、要素は任意の種類であってもよい。
(3)Objectは対象を表しています。C言語の構造体に似ています。括弧「{}」で囲まれています。元素の要求はキーペアで、keyはStringタイプでなければなりません。valueは任意のタイプです。keyとvalueの間は「:」でマッピング関係を表し、要素間もカンマで区切られています。
(4)String、Boolean、nullはJavaと同じで、ここではもはや説明しない。
2.Jsonを構築する
JSONObjectを使うにはorg.jsonバッグを参照する必要があります。
ヒント:私はmavenプロジェクトを構築する時、しばしば失敗を作りました。ネットで調べてみましたが、まだ分からないです。その後、科学ネットで解決しました。もしあなたも失敗を作ったら、試してみてもいいです。
2.1直接構築

JSONObject obj = new JSONObject();
obj.put(key, value);
直接構築とは、JSONObjectオブジェクトを直接的に実装し、そのput()メソッドを呼び出して、データを書き込みます。put()メソッドの最初のパラメータはkey値であり、Stringタイプでなければならず、第二のパラメータはvalueであり、boot an、double、int、long、Object、MapおよびCollectionなどであることができる。もちろん、doubleやintなどはJavaだけで、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 JavaBeanを使って構築する
前の2つの方法に比べて、実際の開発にJavaBeanを適用して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;
  }
}
メール:

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);
  }

}
注意したいのですが、JavaBeanはgetter方法が必要で、保存されているデータにアクセスできなくなります。
3.解析Json
解析Jsonは主にNumber、bollanなどの基本タイプであり、配列Arayとのことです。
基本タイプの解析は、JSONObjectオブジェクトのgetXxx(key)メソッドを直接呼び出し、文字列を取得するとget String(key)、ブール値を取得するとget Boolean(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
}
pom.xmlには、FileUtilsを使用してファイルアクセスを容易にするために、comons-inoに対する依存を追加します。

<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を使ってjsonを生成して解析する方法は小编で皆さんに提供した内容の全てです。