Java Jsonをオブジェクトにして参照(ファイル/文字列)

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メソッドを使用します。

https://fasterxml.github.io/jackson-databind/javadoc/2.8/com/fasterxml/jackson/databind/ObjectMapper.html#readTree(java.io.File)

 

文字列の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型のデータを読み込んでいます。

https://fasterxml.github.io/jackson-databind/javadoc/2.8/com/fasterxml/jackson/databind/ObjectMapper.html#readTree(java.lang.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のライブラリが必要です。

関連の記事

Java JacksonでJSONとオブジェクトを変換

△上に戻る