文字列(String型)としてJSONの受け渡しをする場合があると思います。
その際に、文字列がJSONかどうかをパースする方法を紹介していきます。
① org.jsonライブラリを使用する
org.jsonライブラリのorg.json.JSONObjectとorg.json.JSONArrayの作成をトライしてみて、作れたらJSON、作れなかったらただの文字列と判別する方法になります。
論理構造としてもとてもわかりやすいですね。
1. org.jsonライブラリのインポート
org.jsonライブラリを自分のプロジェクトにインポートしましょう。
mavenを使う方はhttps://mvnrepository.com/artifact/org.json/json
2. 例外処理でパースしていく
1 2 3 4 5 6 7 8 9 10 11 12 |
public boolean isJSON(String test) { try { new JSONObject(test); } catch (JSONException exo) { try { new JSONArray(test); } catch (JSONException exa) { return false; } } return true; } |
パースしたい文字列を引数として渡します。
まずはJSONObjectとしてnewできるかトライします。
エラーが出たら次にJSONArrayとしてnewできるかトライします。
どちらでもnewできなかったら文字列となります。
JSONの場合はTrue、文字列の場合はFalseを返します。
② jacksonライブラリを使う
JSONを扱うライブラリにはGSONやjacksonなどがありますが、jacksonを使ったやり方を紹介します。
1. jacksonライブラリをインポート
まずはjacksonライブラリを自分のプロジェクトにインポートします。
mavenを使う方はhttps://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core
2. パース処理をする
原理は①と全く同じです。
標準APIを使うか、外部APIを使うかの違いのみです。
1 2 3 4 5 6 7 8 9 |
public boolean isJSON(String test) { try { ObjectMapper mapper = new ObjectMapper(); mapper.readTree(test); } catch (IOException e) { return false; } return true; } |
こちらも一応説明しておきますと、ObjectMapperがnewできるならJSON、できないならただの文字列として判別しています。
JSONの場合はTrue、文字列の場合はFalseを返します。
コメントを残す