11

私はサービスを打っていて、時々次のようなものを返します:

{ "param1": "value1", "param2": "value2" }

そして時々このようなリターンを得る:

[{ "param1": "value1", "param2": "value2" },{ "param1": "value1", "param2": "value2" }]

取得しているものをどのように確認できますか? getClass() を実行すると、両方とも String に評価されますが、これを実行しようとすると:

json = (JSONObject) new JSONParser().parse(result); 

2番目のケースでは、例外が発生します

org.json.simple.JSONArray cannot be cast to org.json.simple.JSONObject

これを回避する方法は?どちらが戻ってくるかを確認する方法を知りたいだけです。(最初のケースには時々[]含まれているため、インデックスを実行できず、最初の文字をチェックするよりもクリーンな方法が必要です。

これをチェックする何らかの方法が必要ですか?

4

2 に答える 2

22

単純な Java:

Object obj = new JSONParser().parse(result); 
if (obj instanceof JSONObject) {
    JSONObject jo = (JSONObject) obj;
} else {
    JSONArray ja = (JSONArray) obj;
}

間違った種類の JSON を解析するオーバーヘッドを回避したい場合は、(意図された) JSON が a[または aで始まるかどうかをテストすることもできます。{ただし、先頭の空白には注意してください。

于 2013-05-07T03:22:11.983 に答える