2017-08-17 11 views
0

JSONオブジェクトへの逆シリアル化をしようとしていますが、大文字で始まるパラメータがdoubleと書かれています。例えば; JSON文字列の内部Java JSONはdoubleと書いています

Request req = new Request(); 
req.setMAC("abcdef"); 
req.setMACParams("term:id:orderno"); 
req.setOrderNo("999xdef123"); 

final ObjectMapper mapper = new ObjectMapper(); 

String json = mapper.writeValueAsString(req); 

{ "MAC":"abcdef","MACParams":"term:id:orderno","OrderNo":"999xdef123","mac":"abcdef","macparams":"term:id:orderno","orderno":"999xdef123" } 

だから私は、この二重のコードを防ぐために何をすべき?

+0

hmm javaは大文字と小文字を区別します、 'MAC'は' mac'とは異なります...どういう疑問がありますか... – nafas

+0

https://stackoverflow.com/a/37686018/1927832 –

+0

完全な最小限の例を投稿してください問題を再現する。投稿しないとコードが表示されません。あなたが投稿した数行は、有効なJavaコードでさえありません。 –

答えて

1

この問題は、フィールドプロパティ名で使用される大文字のために発生します。 Requestクラスの各フィールドで@JsonPropertyアノテーションを使用するだけで、指定された名前にしかデシリアライズされません。

例:getMACとsetMAC whith

class Request{ 
    @JsonProperty("MAC") 
    private String mac; 

} 
0

は、あなたのクラスの要求にゲッター&セッターを持っていますが、それらのゲッターは、Java Beanの規則に従わない、 フィールド "MAC" 正しいことwhillが、 " getMac "は結果にmacを2回生成します。

関連する問題