2

まず、あいまいなタイトルで申し訳ありません...

次のシナリオで例外を処理する方法を知りたいです... EJB から文字列を受け取る Struts アクションがあります。

try{       
  JSONObject data = new JSONObject(result);   //result is String 
  String gatewayId = data.getString("gatewayId");
  session.setAttribute("gatewayId", gatewayId);
}catch(Exception e){
  System.out.println(e.getMessage());
}

編集 インポートは次のとおりです。

import org.apache.struts2.json.*;
import org.json.*;

json が次の場合:

{"gatewayId":100, "mask":4}

B json の場合:

{"success":false, "errorDesc":"bla bla"}

gatewayIdが JSON に含まれている場合、 問題はありませんが、問題は、EJB から受信した JSON がそのキーと値のペアを持つことができる (ただし、そうである必要はない) ことです。

ブール値の JsonObject.hasString()メソッドがあった場合、if/else if ステートメントで最初に文字列の存在をチェックするおかげで例外はありませんが、この方法では例外を回避できません...

私が最初にできると思ったのは、例外の種類に応じて異なる catch ブロックを用意することでしたが、すべての例外は一般的なJSONException型のようであり、JSON 処理コードを catch ブロックに入れるべきではありません。また、例外をスローします。

ここでは、JSON の問題の正確な解決策を探しているのではなく、例外の発生を回避するのに役立つ関数がない場合に、この種の問題を解決する方法の一般的な説明を探していることに注意してください...

私の質問が理にかなっていることを願っています....

4

1 に答える 1

3

試す

data.has("gatewayId");

これは役に立ちます。

于 2012-06-11T10:30:36.317 に答える