14

Eclipse のres/rawフォルダーに1 つのテキスト ファイルを保存しました。そのファイルの内容をここに示しています。

{
    "Categories": {
        "Category": [
            {
                "cat_id": "3",
                "cat_name": "test"
            },
            {
                "cat_id": "4",
                "cat_name": "test1"
            },
            {
                "cat_id": "5",
                "cat_name": "test2"
            },
            {
                "cat_id": "6",
                "cat_name": "test3"
            }
        ]
    }
}

この JSON 配列を解析したい。これどうやってするの?

誰でも私を助けてもらえますか??

前もって感謝します。

4

4 に答える 4

40
//Get Data From Text Resource File Contains Json Data.    
InputStream inputStream = getResources().openRawResource(R.raw.json);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();

int ctr;
try {
    ctr = inputStream.read();
    while (ctr != -1) {
        byteArrayOutputStream.write(ctr);
        ctr = inputStream.read();
    }
    inputStream.close();
} catch (IOException e) {
    e.printStackTrace();
}
Log.v("Text Data", byteArrayOutputStream.toString());
try {
    // Parse the data into jsonobject to get original data in form of json.
    JSONObject jObject = new JSONObject(
            byteArrayOutputStream.toString());
    JSONObject jObjectResult = jObject.getJSONObject("Categories");
    JSONArray jArray = jObjectResult.getJSONArray("Category");
    String cat_Id = "";
    String cat_name = "";
    ArrayList<String[]> data = new ArrayList<String[]>();
    for (int i = 0; i < jArray.length(); i++) {
        cat_Id = jArray.getJSONObject(i).getString("cat_id");
        cat_name = jArray.getJSONObject(i).getString("cat_name");
        Log.v("Cat ID", cat_Id);
        Log.v("Cat Name", cat_name);
        data.add(new String[] { cat_Id, cat_name });
    }
} catch (Exception e) {
    e.printStackTrace();
}
于 2012-05-07T09:25:01.570 に答える
2

これはあなたのコードです:

String fileContent;
            JSONObject jobj = new JSONObject(fileContent);
            JSONObject categories = jobj.getJSONObject("Categories");
            JSONArray listCategory = categories.getJSONArray("Category");
            for( int i = 0; i < listCategory.length(); i++ ) {
                JSONObject entry = listCategory.getJSONObject(i);
                //DO STUFF
            }
于 2012-05-07T09:10:32.890 に答える
1

Android フレームワークには、android.util パッケージにヘルパーJsonReaderがあります。

魅力のように機能し、素晴らしい例を示しました。最初のブロックでは、角かっこ '}' がない小さなエラー:

public List readJsonStream(InputStream in) throws IOException {
     JsonReader reader = new JsonReader(new InputStreamReader(in, "UTF-8"));
     try {
       return readMessagesArray(reader);
     } finally {
       reader.close();
     }
}

google-devs GSONからの優れたライブラリも存在します。これにより、json 構造を Java モデルに直接マッピングすることができます。こちらをご覧ください。

于 2016-02-07T12:40:17.617 に答える
0
  1. それをString
  2. 取得JSONArrayしたString
  3. get() メソッドを使用してデータを取得する
于 2012-05-07T09:10:13.140 に答える