Java で文字列を JSON オブジェクトに変換する
-
Java で文字列を JSON オブジェクトに変換するには
JSONObject
を使用する - Java で Google Gson を使用して文字列を JSON オブジェクトに変換する
-
Jackson
を用いて文字列を JSON オブジェクトに変換する
このチュートリアルでは、Java で文字列を JSON オブジェクトに変換する方法について説明します。このタスクを実行するために利用できるさまざまなライブラリがあります。
Java で文字列を JSON オブジェクトに変換するには JSONObject
を使用する
JSONObject
は文字列を解析してマップのようなオブジェクトに変換することができます。これは順不同のキーと値のペアを格納します。ここでは、JSON-java ライブラリ、通称 org.json
を、必要な maven 依存関係とともに利用します。使用した maven の依存関係は以下の通りです。
<!-- https://mvnrepository.com/artifact/org.json/json -->
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20201115</version>
</dependency>
JSON 文字列をパースして JSONObject
にするには、以下のようにコンストラクタに文字列を渡します。
import org.json.JSONException;
import org.json.JSONObject;
public class StringToJsonObject {
public static void main(String[] args) {
try {
String str = "{\"name\":\"John\",\"age\":\"30\"}";
JSONObject jsonObject = new JSONObject(str);
System.out.println("OBJECT : " + jsonObject.toString());
} catch (JSONException err) {
System.out.println("Exception : " + err.toString());
}
}
}
出力:
OBJECT : {"age":"30","name":"John"}
Java で Google Gson を使用して文字列を JSON オブジェクトに変換する
Google Gson は、Java オブジェクトを JSON にシリアライズ/デシリアライズするための Java ライブラリです。また、Java 文字列を同等の JSON オブジェクトに変換するためにも使用できます。
このライブラリに必要な maven 依存関係を以下に示します。
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.6</version>
</dependency>
このコードでは、まず GsonBuilder の create()
メソッドを呼び出して Gson のインスタンスを作成します。また、builder
で様々な設定を有効にすることもできます。以下に示すように、setPrettyPrinting()
メソッドを使用します。名前が示すように、これは JSON 出力をきれいに出力します。
これは JSON 文字列をパースして User
オブジェクトを生成するものです。toJson()
メソッドは Gson を使って User
オブジェクトを JSON 文字列に変換します。このように、文字列 str
は Gson ライブラリを使って JSON オブジェクトに変換されます。
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonIOException;
public class StringToJsonObject {
public static void main(String[] args) {
try {
String str = "{\"name\":\"John\", \"age\":21 , \"place\":\"Nevada\"}";
GsonBuilder builder = new GsonBuilder();
builder.setPrettyPrinting();
Gson gson = builder.create();
User user = gson.fromJson(str, User.class);
System.out.println(user.ShowAsString());
str = gson.toJson(user);
System.out.println("User Object as string : " + str);
} catch (JsonIOException err) {
System.out.println("Exception : " + err.toString());
}
}
}
class User {
public String name;
public int age;
public String place;
public String ShowAsString() {
return "User [" + name + ", " + age + ", " + place + "]";
}
}
出力。
User[John, 21, Nevada] User Object as string : {
"name" : "John", "age" : 21, "place" : "Nevada"
}
Jackson
を用いて文字列を JSON オブジェクトに変換する
Jackson は Java JSON ライブラリ
としても知られています。オブジェクトマッピング ObjectMapper
は、JSON を Java オブジェクトにマッピングしたり、Java オブジェクトを JSON にマッピングしたりするのに使われます。このライブラリに使われている maven 依存関係を以下に示します。
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.11.3</version>
</dependency>
Jackson には JSON オブジェクトを表現するためのツリーモデルが組み込まれています。JsonNode
はそのツリーモデルを表現するクラスです。ObjectMapper インスタンスの mapper
は、readTree()
を呼び出して JSON を JsonNode
のツリーモデルに変換します。
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
public class StringToJsonObject {
public static void main(String[] args) {
String json_str = "{\"name\":\"John\", \"age\":21 , \"place\":\"Nevada\"}";
ObjectMapper mapper = new ObjectMapper();
try {
JsonNode node = mapper.readTree(json_str);
String name = node.get("name").asText();
String place = node.get("age").asText();
System.out.println("node" + node);
System.out.println("name: " + name + ", place: " + place);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
}
}
出力:
node{"name":"John","age":21,"place":"Nevada"}
name: John, place: 21
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn関連記事 - Java String
- Java で 16 進文字列のバイト配列を変換する方法
- Java で文字列から部分文字列を削除する方法
- Java で文字列から文字列配列への変換を実行する方法
- Java 文字列をバイトに変換する方法
- Java でランダムな文字列を生成する
- Java のスワップメソッド