2016-08-04 4 views
1

私は私がブラウザに表示するようになります。ペイロードのjava.util.OptionalをREST APIで使用する方法

[{"activeDirectoryDataSource":{"host":"localhost","port":0,"userName":"user","password":"password","activeDirectoryQueryConfig":{"base":{"present":false},"filter":"filter","attributes":[]},"activeDirectorySslSettings":{"present":false}},"shActiveDirectorySettings":{"present":true},"saActiveDirectorySettings":{"present":true}}] 

ある

 Optional<ActiveDirectoryConfiguration> configuration = store.getConfiguration(); 
     if (configuration.isPresent()) { 
     return configuration.get(); 
     } 

としてAPIを介してこれを送る

public class ActiveDirectorySetup implements Serializable { 
    private ActiveDirectoryDataSource activeDirectoryDataSource; 
    private Optional<ShActiveDirectorySettings> shActiveDirectorySettings; 
    private Optional<SaActiveDirectorySettings> saActiveDirectorySettings; 
// ... 
} 

のように見えるクラスを持っています

{ 
    "activeDirectorySetups": [ 
     { 
      "activeDirectoryDataSource": { 
       "host": "localhost", 
       "port": 0, 
       "userName": "user", 
       "password": "password", 
       "activeDirectoryQueryConfig": { 
        "base": null, 
        "filter": "filter", 
        "attributes": [] 
       }, 
       "activeDirectorySslSettings": null 
      }, 
      "shActiveDirectorySettings": { 
       "enableUserMapping": true, 
       "attributes": null 
      }, 
      "saActiveDirectorySettings": null 
     } 
    ] 
} 

ご覧のとおり、実際の値の代わりに{"present":true}が得られます。

私はこの作業にjackson-datatype-jdk8を使用しています。どのように私は、実際の値で{"present":true}を交換することを強制することができます - のいずれかnullまたは {"enableUserMapping": true, "attributes": null}

答えて

0

のJava 8のオプションの使用している間、私は親切にオプションが直列化可能ではないではないことをあなたはデフォルトのJavaのシリアライズに頼っていると思うので、あなたが持っているだろうあなたのjsonシリアライザ/デシリアライザを書くことができます。

関連する問題