2016-08-25 13 views
-2

出力はString jsreturn: [{"type":1, "msg":"ERROR"}]です。org.json.JSONException:JSONArray [0]はJSONObjectではありません

私はmsgの内容であるERRORを取得しようとしています。私は配列に文字列のリターンを変換することによってそれをやっています。しかし、私はいくつかのエラーを次のコードの各行の隣にコメントしています。 洞察?

私はこの作品、私はそれが簡単だと思う、私はあなたの質問を理解しているかどうかを知るいけない
Vector<ClsReturn> ret = null; 
ret = ds.id(collection, "fs",in_uri); 

String jsReturn = ret.toString(); 

JSONObject myJsonObject = new JSONObject(ret); 

JSONArray array = new JSONArray(jsReturn); 

int i = 0; 

while(i < array.length()){ 
    myJsonObject = array.getJSONObject(i); //org.json.JSONException: JSONArray[0] is not a JSONObject. 
    System.out.println(myJsonObject.getString("msg")); 
    i++; 
} 
+0

あなたの例では、実際には意味がありません。あなたのJSONには(少なくともあなたが私たちに示しているもの)はありません。また、配列はJSONを保持する 'jsReturn'ではなく' solrReturn'を表します。 – Pshemo

+0

JSon配列の記述方法ではありません。SOLrの戻り値の型はjsonオブジェクトで使用するためのものではありません.jsonオブジェクトの配列を返すには、これらの2つのパラメータを含むオブジェクトのリストを定義するか、ワイルドカードのリストがあります。 –

+0

現在のコードでこの問題を再現することはできません。これは、 'jsReturn'にはあなたが記述しているJSON構造が含まれていないことが示唆されています。 – Pshemo

答えて

2

:あなたはどの `msg`にアクセスしようとしているので、

String jsReturn =" [{\"type\":1, \"txt\":\"ERROR\"}]"; 
    JSONArray array = new JSONArray(jsReturn); 
    int i = 0; 
    JSONObject myJsonObject = new JSONObject(); 
    while(i < array.length()){ 
     myJsonObject = array.getJSONObject(i); 
     System.out.println(myJsonObject.getString("txt")); 
     i++; 
    } 
+0

ええ、thats correct –

+0

あなたの答えは、OPコードが機能するはずであることを示唆しています。お読みください:[私のために働く "答えは有効ですか?](http://meta.stackexchange.com/questions/118992/are-works-for-me-answers-valid) – Pshemo

+0

ありがとう@Pshermo私はこの詳細を考慮する必要がありますしかし、質問は「私はいくつかのエラーが発生しました」と答えています。この答えはエラーを解決する必要があります。なぜそれが発生するのかを理解するために重要なことを考慮すると、私はコードを説明します。再度ありがとう – MrElefant

関連する問題