簡體   English   中英

適用於Android的JSON解析 - 嵌套項目?

[英]JSON Parsing for Android - nested items?

我已經使用過這個網站多年了,但從未發布過。 我很難過,希望有人可以幫助我。

我使用的非常相似的代碼Slicekick在這里發布的JSON解析應用程序“沒有數據”? ,但似乎無法弄清楚如何解析這個JSON文件。 我已經編輯了他的JSON信息,以反映我試圖解析的確切格式以節省空間/時間。 如何解析“結果”,以便查詢“名稱”和“類型”? 就像他的“相似”和“信息”問題一樣,我如何在下面的文件中解析“信息”和“結果”?

以下是以我正在使用的格式編輯的JSON文件的示例:

{
"head": {
    "title": "Music",
    "status": "200"
},
"Info": [
    {
        "Name": "Mos Def",
        "Type": "music",
        "Results": [
            {
                "Name": "Talib Kweli",
                "Type": "music"
            },
            {
                "Name": "Black Star",
                "Type": "music"
            },
            {
                "Name": "Little Brother",
                "Type": "music"
            }
         ]
    }, 
    {
        "Name": "Mos Def",
        "Type": "Vehicles",
        "Results": [
            {
                "Name": "Chevy",
                "Type": "Car"
            },
            {
                "Name": "Ford",
                "Type": "Car"
            },
            {
                "Name": "Pontiac",
                "Type": "Car"
            }
         ]
      }
   ]
}

我感興趣的部分代碼是:

...我做了一個httpget ...它被內置到StringBuilder中......用StringBuilder的結果創建一個JSONObject

   jArray = new JSONObject(result);

...然后返回

然后到......

   JSONArray  Info = json.optJSONArray("Info");

   System.out.println("HERE IS INFO: ");
   System.out.println(Info);
   //System.out.println("HERE IS RESULTS: ");
   //System.out.println(Results);

基本上這里是我難倒的地方。 我輸入了打印消息,試圖縮小問題范圍。

解析“信息”允許我搜索:“名稱”:“Mos Def”“類型”:“音樂” - 和 - “名稱”:“Mos Def”“類型”:“車輛”

用“結果”替換“信息”的搜索不會給我任何數據。 (未找到)

有任何想法嗎?

這是肯定的,因為Results是JSONArray Info的JSONArray。 所以你應該嘗試這樣的事情,

JSONArray  Info = json.optJSONArray("Info");
JSONArray Results = null;
for (int i = 0; i < array.length(); i++) {
            JSONObject object = Info.getJSONObject(i);
            Results results = object.getJSONArray("Results");
        }

您需要調用您的解析代碼,如下所示:

jArray = new JSONObject(result);
for(int i=0;i<jArray.length();i++)
{
    JSONArray  Info = json.optJSONArray("Info");
    for(int j=0;j<Info.length();j++){
    {
         System.out.println("HERE IS INFO: ");
         System.out.println(Info);
         //System.out.println("HERE IS RESULTS: ");
         JSONObject obj=Info.getJSONObject(j);
         JSONArray results=obj.getJSONArray("Results");
         for(int k=0; k<results.length();
         {
             //Process Results
         }
}

更好地使用GSON,它來自谷歌並使用它解析JSON是小菜一碟.. !! 這是一個很好的教程,使用GSON你會更開心。

鏈接GSON教程

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM