2016-06-11 1 views
0

次のコードはうまく機能します(!)、私はそれを独自の関数に移しましたが、json変換されたArray(最終行)から戻ってきません。何をwronngしていますか? 「未声明」:Javaでjson変換された配列からaを返すには?

public Array jsonToArray(String json) { 

    JSONObject myjson = null; 
    try { 
     myjson = new JSONObject(json); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
    JSONArray the_json_array = null; 
    try { 
     the_json_array = myjson.getJSONArray("profiles"); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
    int size = the_json_array.length(); 
    ArrayList<JSONObject> arrays = new ArrayList<JSONObject>(); 
    for (int i = 0; i < size; i++) { 
     JSONObject another_json_object = null; 
     try { 
      another_json_object = the_json_array.getJSONObject(i); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 

     arrays.add(another_json_object); 
    } 

    JSONObject[] jsons = new JSONObject[arrays.size()]; 
    arrays.toArray(jsons); 

    return Array jsons; 
} 

私はイムはエラーを取得...問題のタイプだと思いますが、JAVAで完全に新しいイム。意味と解決策は何ですか?

+0

'return Array jsons;'は有効な構文ではありません... 'return jsons;'はありますが、それがあなたの望むものであるかどうかは不明です –

+1

上記のコードはコンパイルされません –

+0

実際にはコードはありません、 "うまく動作する"実際に実行されない限り –

答えて

1
public JSONObject[] jsonToArray() 

と同様に

return jsons; 

また、ArrayList<JSONObject>を返さないでください。なぜ別の変換に気をつけますか?

理想的には、JSONObjectのJava配列の代わりに実際のJSONArrayオブジェクトを返す方が理にかなっています。このような

return myjson.getJSONArray("profiles"); 

あるいは、さらに一歩、実際には独自のJavaクラスにしたいJSONの値からを解析するなど

+0

ありがとうございます! :-) – hannsworst

0

あなたが行う必要があります。

return jsons; 

をし、また戻り値の型を修正し、あなたは、あなたが私はあなたのコード内の任意の場所に定義されているタイプが表示されていない、そこArrayを持っている、とJavaには、このようなタイプではありませんおそらくJSONObject[]を望んでいたので、この方法の最初の行は次のようになります。

public JSONObject[] jsonToArray(String json) { 
+0

うーん、うまく動作しません。私は試してみました: "戻るjsons;" return文の上にマウスを移動すると、次のようになります。互換性のない型。必須リスト。見つかった:org.json.JSONObject [] – hannsworst

+0

@hannsworst 'Array'を' JSONObject [] 'に置き換える必要があります –

関連する問題