LoginSignup
0
0

More than 5 years have passed since last update.

既にインスタンス化されてるObjectへjsonをMapping

Last updated at Posted at 2017-09-07

引数無しのデフォルトコンストラクタが使えないBeanクラスへ
Jsonをmappingするときに使えます。
※Beanのフィールドが全部Stringの場合に限ります

ソース


import java.io.IOException;
import java.util.LinkedHashMap;
import java.util.Map;

import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;

public class ObjectMapper2 extends ObjectMapper{
    public <T> T readValue(String content, T bean)
                throws IOException, JsonParseException, JsonMappingException
    {
        // JSON -> Map
        Map<String,String> map = null;
        ObjectMapper mapper = new ObjectMapper();
        try {
            map = mapper.readValue(content, new TypeReference<LinkedHashMap<String,String>>(){});
        } catch (Exception e) {
            e.printStackTrace();
        }
        map.forEach( (key,value)->{
            try{
                org.apache.commons.lang3.reflect.FieldUtils.writeDeclaredField(bean, key, value, true);
            }catch(Exception e){
                e.printStackTrace();
            }
        });
        return bean;
    }

}

呼び出し側

AbcBean bean = objectMapper.readValue(loginSessionJson, new AbcBean(null,null,null));
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0