【Java】ObjectMapperでJSONデータを変数に取り込む
ObjectMapperを使えばどんな型のjsonデータであっても変数に取り込んだり、またオブジェクトからjsonを出力したりすることができます。
過去に紹介した JSONObjectを使う方法 より全然楽です。
目次[非表示]
連想配列のJSON
JSONデータ
JSONデータは以下を使用します。
{
"member_id":"1,
"name":"Taro",
"age":30,
"address":"Tokyo"
}
JSONデータのParse処理
package com.example;
import java.util.Map;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
public class App
{
public static void main(String[] args)
{
String json = "{\"member_id\":1,\"name\":\"Taro\",\"age\":30,\"address\":\"Tokyo\"}";
try {
Map<String, Object> map = new ObjectMapper().readValue(
json,
new TypeReference<Map<String, Object>>() {
});
for(Map.Entry<String, Object> entry : map.entrySet()){
System.out.println("key:" + entry.getKey() + ",
value:" + entry.getValue());
}
} catch (Exception e) {
System.out.println(e.getClass().getName() + "\n" + e.getMessage());
}
}
}
実行結果
key:member_id, value:1
key:name, value:Taro
key:age, value:30
key:address, value:Tokyo
List形式のJSON
JSONデータ
[
{
"member_id\":"1,
"name":"Taro",
"age":30,
"address":"Tokyo"
},
{
"member_id\":"2,
"name":"Jiro",
"age":26,
"address":"Tokyo"
}
]
JSONデータのParse処理
package com.example;
import java.util.List;
import java.util.Map;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
public class App
{
public static void main( String[] args )
{
String json = "[{\"member_id\":1,\"name\":\"Taro\",\"age\":30,\"address\":\"Tokyo\"},{\"member_id\":2,\"name\":\"jiro\",\"age\":26,\"address\":\"Tokyo\"}]";
try {
List<Map<String, Object>> list = new ObjectMapper().readValue(
json,
new TypeReference<List<Map<String, Object>>>() {
});
for (Map<String, Object> map : list) {
for(Map.Entry<String, Object> entry : map.entrySet()){
System.out.println("key:" + entry.getKey() +
", value:" + entry.getValue());
}
System.out.println("------------------------");
}
} catch (Exception e) {
System.out.println(e.getClass().getName() + "\n" + e.getMessage());
}
}
}
実行結果
key:member_id, value:1
key:name, value:Taro
key:age, value:30
key:address, value:Tokyo
------------------------
key:member_id, value:2
key:name, value:Jiro
key:age, value:26
key:address, value:Tokyo
------------------------
例外
Jsonデータが壊れていたりして場合は、ObjectMapper().readValue()で例外が発生します。
- com.fasterxml.jackson.core.JsonParseException
- com.fasterxml.jackson.databind.exc.MismatchedInputException
- com.fasterxml.jackson.databind.JsonMappingException
コメント
コメントを投稿