2016-07-25 6 views
0

私のサーバは、Rails 4.xと、APIを介してレコードを返すために使用しているto_jsonメソッドで書かれています。これはAndroid/Java:Railsから来るJSONの解析配列

[{"id":503240,"name":"bob"},{"id":503241,"name":"Tom"}] 

これはAndroidに問題なく、文字列として使用してログに記録しても問題ありません。

これで、配列の各項目をループしてidを取得します(最終的にListViewに表示する)。

私がする必要がある最初の事は、個々のオブジェクト「を参照してください。」です。だから私は、次のコード行を使用して上記の解析しています:

JSONArray jsonResponse = new JSONArray(jsonString); 

また「パース」エラーが発生することなく、しかし...私はjsonResponseような何かをしようとすると、[1]、またはjsonResponse.getObject(1 )配列の要素の一つに手を差し伸べるために(私はそれを例としてログに記録します)、私は間違っていると私に伝えてIDEを過ぎることはできません。

個別のjsonオブジェクトに対処して操作できる場合は、個々のデータ要素に対処するのに問題はないと確信しています。それは問題を引き起こしているこの配列です。

私は、Javaに少し新たなんだと私はRubyとスウィフトによって台無しにしています。私は何か基本的なものを欠いている。私は間違って何をしていますか?

ありがとうございます。

+0

可能な重複のようなforループを使用します(http://stackoverflow.com/questions/2591098/how-to- [JavaでJSONをパースする方法] parse-json-in-java) –

答えて

0

AndroidのJSONArraygetObjectという名前のメソッドはありません。ドキュメントhere。私はあなたが必要なものを推測

は次のとおりです。

jsonResponse.getJSONObject(1) 

jsonResponseJSONObject

0

JSONArrayがJSONArrayで発見されたタイプJSONObjectの項目を返すJSONObject getJSONObject(int position)と呼ばれる方法が、含まれているの配列であるため、あなたが求めたポジションで

json配列をリストビューに取り込みたい場合は、リストビュー用のアダプタを作成して、各行に配列の各項目のデータを格納する必要があります。

最も一般的なアダプタがBaseAdapterクラスを拡張して、あなたはあなたには、いくつかのメソッドを実装する必要があることに気づくだろう、メインは

  • getCountある - 通常は、アレイ内で持っているアイテムの数を返し、したがって、基本的に0を返すときは何も表示されませんが、配列のサイズまたは1を返すと、リストビューの行数は同じになります。
  • getView - 各行のビューを返すこのメソッドでは、行を拡大した後、その行のビューを拡張する必要があります(行のレイアウトになるxmlファイルを作成する必要があります) textview、imageviewのようなすべてのelemntsは、あなたの配列の各項目からデータを取り込む必要があります。メカニズムはこのように動作します。このメソッドの引数の1つは行の位置です。したがって、ユーザーがリストをスクロールすると、このメソッドが呼び出され、位置が自動的に更新されます。あなたの配列の項目をyourJSONArray.getJSONObject(position)と呼んで、各テキストフィールドに必要なデータを入力するだけです。 ViewHolderと呼ばれるものがあるperformenceいくつかの便利を作成するために、あなたは行ビューを膨らまユーザーがスクロールするたびに&を作成するには、Androidから避けるために、このいずれかを作成する必要があることを

注意してください。

さらにもう1つは、リサイクルビューについても読んで確認できることです。 JSONArrayをループし

0

ばかりのこの

try { 
    JSONArray array = new JSONArray("[{\"id\":503240,\"name\":\"bob\"},{\"id\":503241,\"name\":\"Tom\"}]"); 

    for (int i = 0; i < array.length(); i++) { 
     JSONObject object = array.getJSONObject(i); 

     Log.d("TAG", "Object #" + i + " id: " + object.getInt("id") + " name: " + object.getString("name")); 
    } 

} catch (JSONException e) { 
    Log.e("TAG", "Cannot parse json :", e); 
}