2017-08-24 4 views
0

私は問題があります。 要求のために体を作成するために、私のコードは、そのようなものです:身体要求にJsonPropertyは価値を持ちません

@Data 
@NoArgsConstructor 
@Builder 
@AllArgsConstructor 
@ToString 
public class CreateCountryCode { 
    @JsonProperty(value = "first_value") 
    private String firstValue; 

    @JsonProperty(value = "second_value") 
    private List<Integer> secondValue; 

} 

問題が作成され、本体がそのようなことである:

{ 
    "firstValue": "AAA", 
    "secondValue": [ 
    0, 1, 2 
    ] 
} 

しかし、私はそれは

{ 
    "first_value": "AAA", 
    "second_value": [ 
    0, 1, 2 
    ] 
} 
のような構造を持つようにしたいです

どこに問題がありますか?

+0

'@JsonProperty(value =" first_value ")'を '@JsonProperty(" first_value ")'に変更して動作するか確認してください –

+0

インポートされたクラスに問題がありました。 ました: '輸入com.auth0.jwt.internal.com.fasterxml.jackson.annotation.JsonProperty、代わりに' '輸入com.fasterxml.jackson.annotation.JsonProperty;' – Marek

答えて

0

私はあなたのライブラリにカスタムシリアライザを使用しなければならないと思います(私はあなたがシミングのためにsomthink jacksonライブラリを使用していると仮定します)。あなたは

1

あなたのデータをシリアライズするときにlombok注釈を使用していて、彼らはゲッターセッターあなたのためのを生成するので、それはそれを使用する必要がカスタム・シリアライザを定義した後 。

プロパティ名のマッピングを変更するには、ゲッターをそのプロパティの注釈とともに手動で定義する必要があります。例:

@JsonProperty(value = "first_value") 
public String getFirstValue(){ return firstValue; } 
0

コードは完全に細かく、要求された出力は下線で表示されます。私はJackson 2.8.5とLombok 1.16.18で動作させています。可能であれば、これらのバージョンにアップグレードして再試行してください。

{"first_value":"foo","second_value":[1,2,3]} 
0

あなたはジャクソンがクラスを使用して、代わりの方法は、ロンボクによって生成されたゲッターフィールドを使用することができます:出力を生成...

public static void main(String[] args) throws IOException 
{ 
    CreateCountryCode code = CreateCountryCode.builder().firstValue("foo").secondValue(Arrays.asList(1, 2, 3)).build(); 
    ObjectMapper mapper = new ObjectMapper(); 
    System.out.println(mapper.writeValueAsString(code)); 
} 

:私は次のコードでテストしてる

レベル注釈。

@JsonAutoDetect(fieldVisibility = ANY, getterVisibility = NONE) 
0

インポートされたクラスに問題がありました。た:

import com.auth0.jwt.internal.com.fasterxml.jackson.annotation.Json‌​Property; 

代わり

import com.fasterxml.jackson.annotation.JsonProperty; 

エンドは今正常に動作します。 ありがとうございます。

関連する問題