0

JSONから取得したデータを通常の文字列配列に保存しようとしています。問題は、JSONデータの数に応じて配列サイズを初期化できないように見えることです。

今のところ、私は自分の配列サイズを宣言します:

String[] path= new String[5];

これはJSONの部分です:

クラスLoadpathはAsyncTaskを拡張します{

    protected String doInBackground(String... args) {
        // Building Parameters
        List<NameValuePair> params = new ArrayList<NameValuePair>();
        // getting JSON string from URL
        JSONObject json = jParser.makeHttpRequest(url_all_imageDB, "GET",params);

        try {
                JSONArray productObj = json.getJSONArray(TAG_IMAGEDB); // JSON Array

                // looping through All path
                for (int i = 0; i < productObj.length(); i++) {
                    JSONObject image = productObj.getJSONObject(i);
                                            path[i] = image.getString(TAG_PATH);
                }

            } else {
                displayPath.setText("No path");
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }

        return null;
    }

だから私の目標は、配列サイズがJSON.length()から取得されることです。これをどのように達成できるか考えてみてください。

4

2 に答える 2

0

JSONArrayの長さに応じてmStrings[]配列サイズを次のように初期化します。

        String[] mStrings;  //<< Declare array as
        mStrings = new String[productObj.length()];  //<<initialize here

        for (int i = 0; i < productObj.length(); i++) {
            JSONObject image = productObj.getJSONObject(i);
            mStrings[i] = image.getString(TAG_PATH);
         }

ArrayListまた、Jsonobjectから値を取得する場合は、StringArrayの代わりに次のように使用すると便利です。

        ArrayList<String> mStrings=new ArrayList<String>(;
        for (int i = 0; i < productObj.length(); i++) {
            JSONObject image = productObj.getJSONObject(i);

            mStrings.add(image.getString(TAG_PATH));
         }
于 2013-01-06T07:38:25.630 に答える
-1

たぶん、文字列配列の代わりにリストを使用できます

于 2013-01-06T07:41:31.100 に答える