0

だから私はこの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 の 4 つの行が存在します。次に、2 番目の取引「テスト」ではユーザーが 1 人しかいないため、1 行のみです。これは、無制限の数の取引で機能できる必要があります。すべての取引を 1 つの配列に解析できますが、ユーザーを分離する方法がわかりません。助けてください!

編集:

これは、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:

だから、これはまだ私に問題を与えています。取引を完全に解析し、各セクションのヘッダーとして表示できます。ユーザーをアクティブという配列にパースすると以下のような配列になります。最初の 4 つは取引「テスト」の一部であり、最後の 4 つは取引「テスト」の一部です。最初の 4 人のユーザーをセクション 0 に設定し、そのセクションに正しい行数を設定して、それらをテーブルビューに正しく表示する方法がわかりません。そして、次のセクションでこれを繰り返します。これは、Y 人のユーザーとの X 件の取引で機能する必要があります。これが理にかなっているといいのですが、助けてください!

  (
                {
        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;
    }
);
4

1 に答える 1

0
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]);
        }
}
}
}
于 2012-07-30T01:37:16.487 に答える