簡體   English   中英

解析嵌套的Json,然后插入uitableview

[英]Parse nested Json and then insert into uitableview

所以我正在嘗試解析此json數據:

        {
    deal = Test;
    expires = "2012-07-29 22:50:30";
    "is_active" = 1;
    "id" = 27;
    users =         (
                    {
            distance = 0;
            latitude = "41.312618";
            longitude = "-74.195114";
            "user_id" = 34;
        },
                    {
            distance = 0;
            latitude = "41.312618";
            longitude = "-74.195114";
            "user_id" = 35;
        },
                    {
            distance = 0;
            latitude = "41.312618";
            longitude = "-74.195114";
            "user_id" = 36;
        },
                    {
            distance = 0;
            latitude = "41.312618";
            longitude = "-74.195114";
            "user_id" = 38;
        }
    );
},
    {
    deal = Testing;
    expires = "2012-07-29 23:37:38";
    "is_active" = 0;
    "id" = 26;
    users =         (
                    {
            distance = 0;
            latitude = "41.312618";
            longitude = "-74.195114";
            "user_id" = 37;
        }
    );
}

因此,我希望處理每個部分的標題,然后使行成為與該處理相關聯的每個用戶。 因此,對於第一筆交易“測試”,用戶34、35、36和38將有四行。然后對於第二筆交易“測試”,只有一個用戶,因此只有一行。 這需要能夠處理無限數量的交易。 我可以將所有交易解析為一個數組,但是在弄清楚如何分離用戶方面遇到了麻煩。 請幫忙!

編輯:

這就是我獲取Json數據並存儲它和交易的方式。

NSURL *loginURL = [NSURL URLWithString: [NSString stringWithFormat: URL];   

NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:loginURL];
[theRequest setHTTPMethod:@"POST"];  

NSError *error;
NSURLResponse *response;

NSData * responseData=[NSURLConnection sendSynchronousRequest:theRequest returningResponse:&response error:&error];  

NSDictionary * luckyNumbers = [NSJSONSerialization JSONObjectWithData:responseData //1                                                          
                                                              options:NSJSONReadingAllowFragments 
                                                                error:&error];  
NSLog(@" %@", luckyNumbers);

NSArray * array1 = [luckyNumbers objectForKey:@"active"]; //THIS IS THE JSON THAT IS DISPLAYED ABOVE

deals = [[NSMutableArray alloc] init];

active = [[NSMutableArray alloc] init];

for (NSDictionary *item in array1)
{
    [deals addObject:item]; // THIS WORKS FINE. IT RETURNS ALL OF THE DEALS IN AN ARRAY WHICH I SET TO THE NUMBER OF SECTIONS IN TABLE AND THE HEADER TITLE OF THE SECTION
    [active addObject:[item objectForKey:@"users"]];//THIS IS THE PROBLEM. 
}

編輯2:

因此,這仍然給我帶來了問題。 我能夠很好地解析交易並將它們顯示為每個部分的標題。 當我將用戶解析為一個稱為active的數組時,它是一個如下所示的數組。 前四個是交易“測試”的一部分,最后四個是交易“測試”的一部分。 我不確定如何將前四個用戶設置為第0部分,在該部分中具有正確的行數,並在tableview中正確顯示它們。 然后在下一節中重復此操作。 這需要X筆交易,Y筆用戶。 我希望這是有道理的,請幫忙!

  (
                {
        distance = 0;
        latitude = "41.312618";
        longitude = "-74.195114";
        "user_id" = 34;
    },
                {
        distance = 0;
        latitude = "41.312618";
        longitude = "-74.195114";
        "user_id" = 35;
    },
                {
        distance = 0;
        latitude = "41.312618";
        longitude = "-74.195114";
        "user_id" = 36;
    },
                {
        distance = 0;
        latitude = "41.312618";
        longitude = "-74.195114";
        "user_id" = 38;
    }
),
(
                {
        distance = 0;
        latitude = "41.312618";
        longitude = "-74.195114";
        "user_id" = 37;
    }
);
var yourDataHolder = JSON.parse(yourJSONObject);
for(var x in yourDataHolder)
{
if(yourDataHolder[x].hasOwnProperty)
{
/**
*   DO STUFF HERE
*/
console.log(yourDataHolder[x].deal);
console.log(yourDataHolder[x].expires);
}
}

為了使您更容易理解,這里發生了什么:yourDataHolder [x]將遍歷JSON對象中的不同項目。 要訪問對象的屬性,請使用yourDataHolder[x].deal,yourDataHolder[x].expires,yourDataHolder[x].is_active,yourDataHolder[x].id

要訪問用戶表中的數據,請執行以下操作:var yourDataHolder = JSON.parse(yourJSONObject);

for(var x in yourDataHolder)
{
if(yourDataHolder[x].hasOwnProperty)
{
/**
*   DO STUFF HERE
*/
for(var y in yourDataHolder[x].users)
{
   if(yourDataHolder[x].users[y].hasOwnProperty)
        {
            /**
            *   You are now inside the current "users" object
            */
            console.log(yourDataHolder[x].users[y]);
        }
}
}
}

暫無
暫無

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

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