コンテンツへスキップ

[Java]String型の文字列比較ができない場合の対処法

Javaで文字列比較できなかった原因は改行コードです。

こんにちは

RestAPIを扱った試験で、試験コードを作成していた時に発生した事象を書きたいと思います。

※【RestAPI】の詳細は別途記載したいと思います。

前提:レスポンスコード(Jsonデータ)が返ってきた想定


Jsonイメージは以下のようになります。

{

"山": [

{

"富士山" :  "知ってる"

}

]

}


objectMapperを使ってjson文字列に変換する

String jsonObject = mapper.writeValueAsString(object);

jsonObjectjsonイメージが入っている感じ。

この時にStrng型の文字列で比較すればいいやと、べた書きでこのように書きました。

例)String strComp = "{\n  山:[  \n          {\n     ";

この問題は空白ではないか。

調べてもわからず。json文字列をコンソールに出力しても全く同じでした。

【\n】で取得できると思っていましたが、【\r\n】でした。

ほかにいい方法がないか、検討したところ以下が使えるようです。

例) String strComp = "{" + System.lineSeparator() + " 山:[ " + System.lineSeparator + "以下省略}";

System.lineSeparator()

こちらは環境に合わせて改行コードを作成してくれるものです。

まとめ

MapperからString型に変換した場合、改行コードがどちらかが判断しづらいためSystem.lineSeparator()を使う

最後まで読んでいただきありがとうございました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください