Javaで文字列比較できなかった原因は改行コードです。
こんにちは
RestAPIを扱った試験で、試験コードを作成していた時に発生した事象を書きたいと思います。
※【RestAPI】の詳細は別途記載したいと思います。
前提:レスポンスコード(Jsonデータ)が返ってきた想定
Jsonイメージは以下のようになります。
{
"山": [
{
"富士山" : "知ってる"
}
]
}
objectMapperを使ってjson文字列に変換する
String jsonObject = mapper.writeValueAsString(object名);
jsonObjectにjsonイメージが入っている感じ。
この時にStrng型の文字列で比較すればいいやと、べた書きでこのように書きました。
例)String strComp = "{\n 山:[ \n {\n ";
この問題は空白ではないか。
調べてもわからず。json文字列をコンソールに出力しても全く同じでした。
【\n】で取得できると思っていましたが、【\r\n】でした。
ほかにいい方法がないか、検討したところ以下が使えるようです。
例) String strComp = "{" + System.lineSeparator() + " 山:[ " + System.lineSeparator + "以下省略}";
System.lineSeparator()
こちらは環境に合わせて改行コードを作成してくれるものです。
まとめ
MapperからString型に変換した場合、改行コードがどちらかが判断しづらいためSystem.lineSeparator()を使う
最後まで読んでいただきありがとうございました。