-9

Json 応答からのデータの取得に問題があります。

データ構造の例を次に示します。

(
     {
        AT = "<null>";
        DId = 0;
        DO = 0;
        PLId = 33997;
        PdCatList =  (
                       {
                PLId = 33997;
                PPCId = 0;

                pdList = (
                      {
                        IsDis = 0;
                        IsPS = 0;
                        IsT = 1;
                        PA = 1;
                        PCId = 119777;
                     }
                );
            }
        );
        PdId = 0;
        SId = 0;
        Sec = 1;
    },
     {
        AT = "<null>";
        DId = 0;
        DO = 11;
        Dis = 0;
        PLId = 34006;
        PdCatList =   (
                {

                PLId = 34006;
                PPCId = 0;
                pdList =  (
                       {
                        IsDis = 0;
                        IsPS = 0;
                        IsT = 1;
                        PA = 1;
                        PCId = 119830;
                       },
                       {
                        IsDis = 0;
                        IsPS = 0;
                        IsT = 1;
                        PA = 1;
                        PCId = 119777;
                       }
                   );
              },

             {
                PLId = 33997;
                PPCId = 0;
                pdList = (
                      {
                        IsDis = 0;
                        IsPS = 0;
                        IsT = 1;
                        PA = 1;
                        PCId = 119777;
                     }
                );
            }

        );
        PdId = 0;
        SId = 0;
        Sec = 1;
    },
)

結果の構造をどのように解析しますか? 値のリストを直接取得したいと思います。パフォーマー PdCatList、pdList など、tupel に複数の値がある場合はどうなりますか。これらの値にどのようにアクセスしますか? 誰でも私を助けることができます

ありがとう

私のコードは

NSError *error;
    Array1 = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];

    for(int i=0;i<[Array1 count];i++)
    {
        NSDictionary *dict1 = [Array1 objectAtIndex:i];

        NSLog(@"Array1.....%@",dict1);

        Array2=[dict1 valueForKey:@"PdCatList"];

        for(int i=0;i<[Array2 count];i++)
        {

            NSDictionary *dict2 = [Array2 objectAtIndex:i];

            NSLog(@"Array2.....%@",dict2);

            Array3=[dict2 valueForKey:@"pdList"];

            for(int i=0;i<[Array3 count];i++)
            {

                NSDictionary *dict3 = [Array3 objectAtIndex:i];

                NSLog(@"Array3.....%@",dict3);

            }


        }


    }
4

6 に答える 6

2

ここで必要なのは、JSON 応答からいくつかのオブジェクトの値を取得するための Answer ではなく、JSON 応答とは何かを理解することだと思います。

JSON 解析に関する詳細な説明が必要な場合は、NSJSONSerialization Class Referenceを参照してください。すべてがそこに与えられているか、私の回答を見ることができます。


コンセプトを理解する。それはあなたがあなたの中に持っているものに依存しますJSON. 配列の場合 ( Values inside [ ]) に保存する必要がありますNSArray。 Dictionary の場合 ( Values inside { }) は名前を付けて保存しNSDictionary、 string 、 integer 、 double などの単一の値がある場合は、適切な Objective-C Data を使用してそれらを保存する必要があります。種類。

example を使用した簡単な詳細については、この質問から私の回答を確認できます。

于 2013-08-03T19:42:19.143 に答える
1

JSONKit ( https://github.com/johnezang/JSONKit )を使用します。

NSString *yourJSONString = ...
NSArray *responseArray = [yourJSONString objectFromJSONString];
for(NSDictionary *responseDictionary in responseArray)
{
    NSString *atString = [responseDictionary objectForKey:@"AT"];
    ...
    NSArray *pdCatListArray = [responseDictionary objectForKey:@"PdCatList"];
    ...here you can get all values you want,if you want to get more details in PdCatList,use for in pdCatListArray ,you can do what you want.
}
于 2013-08-06T05:57:17.543 に答える
1
Use following method:


NSDictionary *mainDict;
SBJSON *jsonParser = [[SBJSON alloc]init];
    if([[jsonParser objectWithString:responseString] isKindOfClass:[NSDictionary class]])
    {
        mainDict=[[NSDictionary alloc]initWithDictionary:[jsonParser objectWithString:responseString]];
    }

NSDictionary *firstDict=[NSDictionary alloc]initWithDictionary:[mainDict valueForKey:@""];
于 2013-08-06T09:50:51.617 に答える
0

解析文字列であるJSON フレームワークを NSDictionaryに追加する必要があります。ここからzipファイルを使用

  1. フォルダーを開き、Classes フォルダーの名前を「JSON」に変更します。
  2. JSON フォルダーをコピーし、プロジェクトに含めます。
  3. JSON 文字列を解析するコントローラーに、以下のようなヘッダーファイルをインポートします。

    #import "SBJSON.h"
    #import "NSString+SBJSON.h"
    
  4. 次に、以下のように応答文字列をNSDictionaryに解析します。

    NSMutableDictionary *dictResponse = [strResponse JSONValue];
    
于 2013-08-06T12:14:50.243 に答える