2017-07-14 4 views
2

Javersを使用して2つのjsons、期待値とAPI Responseを比較しようとしています。比較によって、応答によって動的に生成されるIDパラメータを除外したい。Javers:2つのjsonsを比較しているときに値オブジェクトの特定のフィールドを無視する

マイVOが

public class expectedResponse{ 

@DiffIgnore 
private String id; 
private String name; 

} 

Excelファイルから読み取られ、APIからの実際の応答は、この形式にデシリアライズされた後、応答の両方を比較してどちらも私のexpectedResponse-のようなものです。

JsonNode expectedOutput = mapper.readTree(expected.toString()); 
JsonNode apiResponse = mapper.readTree(actual.toString()); 
diff=javers.compare(expectedOutput, apiResponse); 

しかし、この比較はIDフィールドを除外/無視しません。どのように私はそれを動作させることができる任意のアイデア?私は比較結果に除外されたIDフィールドだけを必要とします。プロパティの名前を印刷するdoesntのが、単にその値として"_value" プリント -

はまた、私はデフ

if (diff.hasChanges()) 
    {    

    List<ValueChange> changes=diff.getChangesByType(ValueChange.class); 
    for (ValueChange change : changes) 
    { 
    logger.info(change.getPropertyName()+ "||" +change.getLeft().toString() + "||" +change.getRight().toString()); 

change.getPropertyName()から変更を一覧表示しようとしています> 2問います。

コードで何が問題になっているのかを特定するのに役立ちますか?これをどのように修正できますか? GoogleのどこでもJaversに関する有用な文書を見つけることはできません。どんな助けもありがとうございます。 Javersはこのフィールドを無視するように知っていない理由

答えて

1

あなたは@DiffIgnore注釈が唯一のあなたのドメインクラスに存在し、JsonNodeExpectedResponse間の接続がないことを見て、代わりにJsonNodeクラスとオブジェクトのあなたのドメインオブジェクトを比較する必要があり、thatsの。要約する

、あなたのコードは次のようになります必要があります。

ExpectedResponse expectedOutput = ... 
ExpectedResponse apiResponse = ... 
diff=javers.compare(expectedOutput, apiResponse); 
+0

おかげパヴェル。それはまさに私が作ったミスでした。それは、いつも顔を見つめていました。私はそれらをすべてのトラブルを引き起こしていた弦として変換させました。あなたの助けが大いにありがとう!ありがとうございました。 – Divya

関連する問題