JavaでJSONをオブジェクトにして参照するサンプルです。ファイルと文字列から行います。
ライブラリとしてjacksonを使用します。(確認環境:JDK 11)
目次
サンプル | ファイルのJSONを読込みオブジェクトにして参照する |
文字列のJSONを読込みオブジェクトにして参照する | |
必要なライブラリ(jackson) |
ファイルのJSONを読込みオブジェクトにして参照する
読み込むファイル(jsonTest1.txt)
文字コードは、UTF-8で保存します。
{
"recodNo": 2000,
"syain": [
{
"id": "1",
"name": "suzuki",
"sikaku": [
"基本",
"応用"
]
},
{
"id": "2",
"name": "tanaka",
"sikaku": [
"ネットワーク"
]
}
]
}
配列([ ])とオブジェクト({ })があります。
コード
public JsonNode readTree(File file) throws IOException |
readTreeメソッドはJsonNodeを返します。
package test1;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
public class Test1 {
public static void main(String[] args) {
Path path1 = Paths.get("D:\\Test1","jsonTest1.txt");
ObjectMapper om = new ObjectMapper();
JsonNode json;
try {
json = om.readTree(path1.toFile());
System.out.println(json.get("recodNo")); //2000
System.out.println(json.get("syain").get(0).get("id")); //"1"
System.out.println(json.get("syain").get(0).get("name")); //"suzuki"
System.out.println(json.get("syain").get(0).get("sikaku").get(0)); //"基本"
System.out.println(json.get("syain").get(0).get("sikaku").get(1)); //"応用"
System.out.println(json.get("syain").get(1).get("id")); //"2"
System.out.println(json.get("syain").get(1).get("name")); //"tanaka"
System.out.println(json.get("syain").get(1).get("sikaku").get(0)); //"ネットワーク"
} catch (IOException e) {
e.printStackTrace();
}
}
}
17行目のtoFileメソッドは、ファイルオブジェクトを返します。
readTreeメソッドは、ファイルオブジェクトを引数にしてJsonNodeオブジェクトを返します。
Jsonの値の取得は19行目以降のようにgetメソッドを使用します。
文字列のJSONを読込みオブジェクトにして参照する
public JsonNode readTree(String content) throws JsonProcessingException, JsonMappingException |
readTreeメソッドはJsonNodeを返します。
package test1;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
public class Test1 {
public static void main(String[] args) {
String jsonData =
"{\"recodNo\":2000,\"syain\":["
+ "{\"id\":\"1\",\"name\":\"suzuki\",\"sikaku\":[\"基本\",\"応用\"]},"
+ "{\"id\":\"2\",\"name\":\"tanaka\",\"sikaku\":[\"ネットワーク\"]}]}";
ObjectMapper om = new ObjectMapper();
JsonNode json;
try {
json = om.readTree(jsonData);
System.out.println(json.get("recodNo")); //2000
System.out.println(json.get("syain").get(0).get("id")); //"1"
System.out.println(json.get("syain").get(0).get("name")); //"suzuki"
System.out.println(json.get("syain").get(0).get("sikaku").get(0)); //"基本"
System.out.println(json.get("syain").get(0).get("sikaku").get(1)); //"応用"
System.out.println(json.get("syain").get(1).get("id")); //"2"
System.out.println(json.get("syain").get(1).get("name")); //"tanaka"
System.out.println(json.get("syain").get(1).get("sikaku").get(0)); //"ネットワーク"
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (JsonProcessingException e) {
e.printStackTrace();
}
}
}
12-14行目は、JSONです。内容は上記ファイルのJSONと同じです。
ダブルコーテーションをエスケープするためにバックスラッシュ(円マーク)が入っています。
20行目は、readTreeメソッドでString型のデータを読み込んでいます。
必要なライブラリ(jackson)
pom.xmlの<dependencies>の間に以下のコードを追加します。
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.7</version>
</dependency>
jacksonのライブラリが必要です。
関連の記事