2016-03-25 5 views
1

jsonオブジェクトのマッピングを終了するためにConverter(org.springframework.core.convert.converter.Converter)を強制することはできますか?@RequestBodyのスプリングコンバータを使用する

JSONコードの例:

{ 
"name": "somename", 
"customObject": id 
} 

somenameの - 整数値

マッピング - 文字列ID:

@Getter 
@Setter 
@NoArgConstructor 
public class ParentObject{ 
    private String name; 
    private CustomObject customObject; 
} 

コンバータコードの例:

@Component 
public class CustomObjectConverter implements Converter<String, CustomObject>{ 

    @Autowired 
    private CustomObjectService customObjectService; 

    @Override 
    public CustomObject convert(String arg0) { 
     Long id = Long.parseLong(arg0); 
     return customObjectService.findById(id); 
    } 
} 

義和私が達成したいのは、そのjsonをdbネストされたオブジェクトから自動的にフェッチされるオブジェクトにマップすることです。

+0

私はコンバータの中でdbコールを使用することは良い考えではないと思う。あなたの質問に答えるには、jsonの文字列をjsonオブジェクトに変換するためにObjectMapperを使用する必要があります。 – Pragnani

+0

あなたのコメントは私に興味をそそられましたが、トピックから外れる可能性がありますが、コンバータのコンポーネントからサービスへの呼び出しが間違っています。私はそのような流れに危険な場所を見つけることができません。 – Jarek

答えて

1

JacksonCustomMapperを実装し、JsonMapperを拡張してHttpMessageConvertersのセットに登録する必要があります。しかし、私はデフォルトの変換を汚染することをお勧めしません@RequestBody不完全なjsonを渡すことができ、ジャクソンはあなたのオブジェクトにそれを解析します、あなたのJSONオブジェクトで間違ったキーを渡すことは十分である...何千もの)ここに:http://magicmonster.com/kb/prg/java/spring/webmvc/jackson_custom.html。それをお楽しみください:-)

関連する問題