-2

JSON ファイルから and を取得しようとしていthumbPathsます。captions

JSON ファイル:

"pictures": [

        {

            "title": "Animals", 
            "gallery": 

            [

                {
                    "path":"",
                    "thumbPath":"",
                    "caption":""
                },
                {
                    "path":"",
                    "thumbPath":"",
                    "caption":""
                },
                {
                    "path":"",
                    "thumbPath":"",
                    "caption":""
                },
                {
                    "path":"",
                    "thumbPath":"",
                    "caption":""
                },
                {
                    "path":"",
                    "thumbPath":"",
                    "caption":""
                },
                {
                    "path":"",
                    "thumbPath":"",
                    "caption":""
                },
                {
                    "path":"",
                    "thumbPath":"",
                    "caption":""
                },
                {
                    "path":"",
                    "thumbPath":"",
                    "caption":""
                },
                {
                    "path":"",
                    "thumbPath":"",
                    "caption":""
                }

            ]

        },
        {

            "title": "Auroras", 
            "gallery": 

            [

                {
                    "path":"",
                    "thumbPath":"",
                    "caption":""
                }

            ]

        },
        {

            "title": "Boats", 
            "gallery": 

            [

                {
                    "path":"",
                    "thumbPath":"",
                    "caption":""
                },
                {
                    "path":"",
                    "thumbPath":"",
                    "caption":""
                },
                {
                    "path":"",
                    "thumbPath":"",
                    "caption":""
                }

            ]

        }

サムパスからの画像の取得を処理できるように、それらを独自の配列に保存しようとしています。AsyncTask でこれを達成しようとしています

public class getJSONObjects extends AsyncTask<String, Void, String[]>{

        @Override
        protected String[] doInBackground(String... URL) {
            // Access the JSONHandler for the URL
            Log.d(tag, "in background on getJSON Artist Gallery.");
            //initalize parser
            JSONParser jparse = new JSONParser();
            //call objects          
                JSONObject json = jparse.getJSONFromUrl(URL);
                try {
                    pictures = new JSONArray(json.getString(TAG_PICTURES));
                    Log.d(tag, "after pictures");
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                // looping through All Pictures
                for(int i = 0; i < pictures.length(); i++){
                    Log.d(tag, "in loop for pictures");
                    Log.d(tag, "Index:" + i);
                    JSONObject c;
                    try {
                        c = pictures.getJSONObject(i);
                        String title2 = c.getString(TAG_TITLE);
                        titles[i] = title2;
                        gallery = new JSONArray(c.getString(TAG_GALLERY));
                        Log.d(tag, "just got gallery array");
                        Log.d(tag, "before if statement");
                        Log.d(tag, "title:" + titles[i].toString());
                        if(title2 == titleTextView.getText().toString()){
                            Log.d(tag, "inside if statement");
                            for(int z = 0; z < gallery.length(); z++){
                                try {
                                    JSONObject d = gallery.getJSONObject(z);
                                    String thumbPath = d.getString(TAG_THUMBPATHS);
                                    String captions = d.getString(TAG_CAPTIONS);
                                    Log.d(tag, "thumbPath:" + thumbPath);
                                    Log.d(tag, "captions:" + captions);

                                } catch (JSONException e) {
                                    e.printStackTrace();
                                }
                            }
                        }
                    } catch (JSONException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }

上記で、タイトルが JSON 配列のタイトルに == である場合、そのタイトルの下のギャラリーでthumbPaths とキャプションのみを取得する必要があることを言おうとしています。そうすれば、必要なものだけを取得し、それ以上のものは何も取得しません。

JSON ファイルから適切な情報を取得するにはどうすればよいですか?

4

2 に答える 2

1

JSONvalueにアクセスするには、対応する を使用してアクセスする必要がありますkey

この場合、構造は配列とキーが混在する JSON オブジェクトです。したがって、最初に与えられた構造によると、keyですpictures

これはarray、最初の要素が 2 つのキー (titlegallery) を保持する型です。に興味がありgalleryます。galleryは再び配列のインスタンスです (オブジェクトの配列です) [0]。そのため、gallery に使用する最初の要素にアクセスして、最初のオブジェクトを取得します。

このオブジェクトは、3 つのキーと値のペアで構成されます。object[key]特定の値を取得するには、対応するキーを使用してアクセスできます。

例えば

thumbPathsとの最初のインスタンスにアクセスするにはcaptions

Object["pictures"][0]["gallery"][0]["thumbPath"] // : ""
Object["pictures"][0]["gallery"][0]["caption"] // : ""

等々 ..

それが役立つことを願っています:)

于 2013-08-15T01:04:57.917 に答える
1

ここで json パッケージのドキュメントを確認してください。

のようなものを置き換えます

gallery = new JSONArray(c.getString(TAG_GALLERY));

gallery = c. getJSONArray(TAG_GALLERY);

また、前述のように、文字列比較にはequals()and notを使用します。==

于 2013-08-15T01:10:49.503 に答える