はじめに: JSON (JavaScript Object Notation)、つまり JS Object Notation は軽量のデータ交換形式です。
さらなる理解:
タイトル + コンテンツというさまざまな言語で本 (オブジェクト) を記述してみてください。軽量なJSONの利点がわかります。
Public class Test {
public static void main() {
Book b = new Book();
b.setName(“金のりんご”);
b.setInfo(“リンゴを育てるのは大変な作業です”);
}
}
class Book {
private String name;
private String info;
メソッド;
get/setメソッド...
}
var b = new Object();
b.name = "金のりんご";
b.info = "リンゴを育てるのは大変な作業です";
<book>
<name>金のりんご>
<info>リンゴを育てるのは大変な作業です>
book>
{
"name":"金のりんご",
"info":"リンゴを育てるのは大変な作業です"
}
ケース
{
"name":"果物の種類",
"info":"果物を育てるのは大変な作業です",
"fruit":["りんご","バナナ",{
"name":"スイカ",
"info":"種なしスイカ"
}],
"haha":{
"name":"大きな長いナイフ",
"length":"40cm"
}
}
Java は JSON を使って何をしますか? 前述したように、データ交換を実現するために使用されます。JSON に格納されているデータ型は文字列であり、この文字列はキーと値のペアで構成されていることがわかっています。これは、Java オブジェクトの属性と値の関係に非常によく似ています。データの便利な操作を実現するために、JSON 文字列を対応する Java オブジェクトに変換する方法はないだろうか? それとも Java オブジェクトの情報を JSON 文字列に変換して他の人が見られるようにしたいでしょうか? JSON 解析の概念を以下に紹介します。
Java 公式には、JSON 解析に対応する API は提供されていません。この記事では、最も一般的に使用される 2 つの JSON 解析メソッド (Google の Gson と Ali の FastJson ) を説明します。 、まず対応する jar パッケージを取得する必要があります。
Gson 解析
- jarパッケージの導入
- JSON 文字列を変換する必要がある場所に次のコードを記述するだけです。 String json = new Gson().toJSON(object to be Converter);
ケース
Book b = new Book("金のりんご","リンゴを育てる悲しい過程を語る",20,100);
String json = new Gson().toJson(b);
System.out.println(json);
出力結果
{"name":"金のりんご","info":"リンゴを育てる悲しい過程を語る","prize":20,"page":100}
1. jar パッケージを導入します。
2. Java オブジェクトを変換する必要がある場所に次のコードを記述します。 type object = new Gson().fromJson(JSON string, object type.class);
ケース1
String json1 = "{\"name\":\"金のりんご\",\"info\":\"リンゴを育てる悲しい過程を語る\",\"prize\":10,\"page\":100}";
Book b1 = new Gson().fromJson(json,Book.class);
System.out.println(b1.getPrize());
出力結果
10
ケース2
注: 文字列の最外層には中括弧「{}」があり、英語の引用符の前にエスケープ文字 \ があります。
// 文字列情報がオブジェクト情報と一致しない場合、hahmap 型もキーと値のペアとして格納されるため、文字列は hashmap オブジェクトに転送されます。
String json2 = "{\"name\":\"金のりんご\",\"info\":\"リンゴを育てる悲しい過程を語る\",\"prize\":20,\"page\":100,\"content\":[\"正午の鍬掘りの日\",\"滴る汗\",\"はははははははは\"]}";
HashMap map = new Gson().fromJson(json2,HashMap.class);
System.out.println(map.get("content"));
// ここで説明しますと、文字列に配列が含まれている場合、HashMap に変換した後、その配列は List として保存されます (実際に試してみてください)
ArrayList list = (ArrayList) map.get("content");
System.out.println(list.get(0));
出力結果
[正午の鍬掘りの日,滴る汗,はははははははは]
正午の鍬掘りの日
FastJson 解析
- jarパッケージの導入
- JSON 文字列を変換する必要がある場所に次のコードを記述するだけです。
ケース
Book b = new Book("金のりんご","リンゴを育てる悲しい過程を語る",20,100);
String fastJson = JSON.toJSONString(b);
System.out.println(fastJson);
出力結果
{"info":"リンゴを育てる悲しい過程を語る","name":"金のりんご","page":100,"prize":20}
- jarパッケージの導入
- Java オブジェクトを変換する必要がある位置に、次のコードを記述します: type object name=JSON.parseObject(JSON string, type.class); または List<type> list=JSON.parseArray(JSON string 、.class) と入力します。
ケース1
Book b1 = JSON.parseObject("{\"name\":\"金のりんご\",\"info\":\"リンゴを育てる悲しい過程を語る\",\"prize\":20,\"page\":100}",Book.class);
System.out.println(b1);
演算結果
Book{name='金のりんご', info='リンゴを育てる悲しい過程を語る', prize=20, page=100}
ケース 2: 配列を list コレクションに変換する
List<String> list = JSON.parseArray("[\"正午の鍬掘りの日\",\"滴る汗\",\"はははははははは\"]",String.class);
System.out.println(list.get(1));
演算結果
滴る汗
ケース 3: 少し複雑な JSON ケースの解析
{
"name":"果物の種類",
"info":"果物を育てるのは大変な作業です",
"fruit":["りんご","バナナ",{
"name":"スイカ",
"info":"種なしスイカ"
}],
"haha":{
"name":"大きな長いナイフ",
"length":"40cm"
}
}
コード
String json = "[{
"name":"果物の種類",
"info":"果物を育てるのは大変な作業です",
"fruit":["りんご","バナナ",{
"name":"スイカ",
"info":"種なしスイカ"
}],
"haha":{
"name":"大きな長いナイフ",
"length":"40cm"
}
}]";
//1. 最外層は配列形式であり、配列には要素が 1 つだけ含まれます。
List<Map> list = JSON.parseArray(json,Map.class);
Map map = list.get(0);
String info = (String) map.get("info");
System.out.println(info); //果物を育てるのは大変な作業です
//2. キー fruit に対応する値の型は配列です。 toJSONString() メソッドを使用して配列を文字列形式に変換し、解析します。
String fruit = JSON.toJSONString(map.get("fruit"));
List<String> list1 = JSON.parseArray(fruit,String.class);
System.out.println(list1.get(0)); //りんご
// オブジェクトへの文字列
Map map1 = JSON.parseObject(list1.get(2),Map.class);
System.out.println(map1.get("info")); //種なしスイカ
実行結果の
概要