試していきます。
前提
- OS: Windows 10 Pro
- Docker: Docker version 19.03.13, build 4484c46d9d
- 使用イメージ:
mikoto2000/openjdk:15
- 使用イメージ:
- Java: openjdk 15 2020-09-15
プロジェクト作成
Spring Initializr で作成。
ここ を参照。
依存関係追加
pom.xml
に Jackson の依存関係を追加。
<!-- 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>
処理実装
まず、 JacksonApplication.java
全体を載せる。
package dev.mikoto2000.study.jackson;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.Bean;
import lombok.Data;
@SpringBootApplication
public class JacksonApplication {
@Autowired
private ObjectMapper jacksonObjectMapper;
public static void main(String[] args) throws Exception {
ConfigurableApplicationContext context = SpringApplication.run(JacksonApplication.class, args);
JacksonApplication app = context.getBean(JacksonApplication.class);
app.process(args);
}
public void process(String... args) throws JsonProcessingException {
String userStringOrig = """
{
"id": 0,
"name": "mikoto2000"
}
""";
// JSON 文字列からオブジェクトへの変換
User user = jacksonObjectMapper.readValue(userStringOrig, User.class);
System.out.println(user);
// オブジェクトから JSON 文字列への変換
String userString = jacksonObjectMapper.writeValueAsString(user);
System.out.println(userString);
}
@Bean
public ObjectMapper mapper() {
return new ObjectMapper();
}
}
@Data
class User {
Long id;
String name;
}
ObjectMapper の設定
JacksonApplication
クラスに、以下修正を行う。
@Autowired
できるように(?)、 ObjectMapper
を返却する mapper
メソッドを追加。
@Autowired
で Jackson の ObjectMapper
クラスをマッピング。
変換主処理
readValue
, writeValueAsString
を使って、オブジェクトと JSON 文字列の変換を行う。
public void process(String... args) throws JsonProcessingException {
String userStringOrig = """
{
"id": 0,
"name": "mikoto2000"
}
""";
// JSON 文字列からオブジェクトへの変換
User user = jacksonObjectMapper.readValue(userStringOrig, User.class);
System.out.println(user);
// オブジェクトから JSON 文字列への変換
String userString = jacksonObjectMapper.writeValueAsString(user);
System.out.println(userString);
}
ログ出力設定
・ src/main/resources/application.yaml
・ src/main/resources/logback.xml
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<appender name="CONSOLE_APPENDER" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d %-5level [%thread] %logger{0}: %msg%n</pattern>
</encoder>
</appender>
<root level="ERROR">
<appender-ref ref="CONSOLE_APPENDER"/>
</root>
</configuration>
で、完成したものがこちら。
おはようございます。
返信削除便利なライブラリですよね。