2017-08-27 19 views
1

私はjava.time.Instant(および他のタイプ)用のカスタムデシリアライザを持つJackson ObjectMapperを持っています。完全なJSONブロブの代わりに単一の値を読み取るにはどうすればよいですか?Jackson - Jacksonのデシリアライザで単一の値を逆シリアル化する

objectMapper.readValue("2017-02-01T00:00:00Z", Instant.class) 

ユースケースを求める意見に応じて明確化:私はすでに

class MyConfiguration { 
    public Instant someField; 
    public Map<String, String> otherFields; 

    @JsonAnyGetter 
    public Map<String, String> any() { 
     return otherFields; 
    } 

    @JsonAnySetter 
    public void set(String name, String value) { 
     otherFields.put(name, value); 
    } 
} 

にJSONを解析されてきた

今私が持っている:

interface Something { 
    void init(MyConfiguration config) 
} 

class Something2 implements Something { 
    public void init(MyConfiguration config) { 
     //Here I would be like the implementation to be able to 
     //get a value from otherFields deserialised to a specified type. 
    } 
} 

アイム私はそれらを直接@JsonSubTypesを使用してマップすることができると認識していますが、私はシステムを拡張可能にしようとしています。実装を知らない。自分の質問に答える

+1

このためユースケースとは何ですか?あなたがJSONを持っていない場合、JSONライブラリを使うのはあまり意味がありません。 https://docs.oracle.com/javase/8/docs/api/java/time/Instant.html#parse-java.lang.CharSequence- – pedromss

+0

@pedromssを使用して、YAMLファイルを解析しています。いくつかの動的プロパティ(Map )と、インターフェイスのさまざまな実装で特定のタイプのプロパティをプルできるようにしようとしています。 ' T getProperty(String prop、Map map、Class clazz)' – bcoughlan

+1

私はまだ混乱しています。あなたはいくつかのJSONを持っていますが、いくつかのフィールドを抽出してそれを逆シリアル化するだけですか? –

答えて

0

、構築ObjectMapperにconvertValueを使用します。

objectMapper.convertValue("2017-10-02T01:02:03Z", Instant.class) 
関連する問題