-2

サーバーからの複雑なjsonデータを次の形式で解析したいと思います。

    {

    "Data 1":{
        "2012-12-01":[
            {
                "field 1":"field 2",
                "summary":"summary 1"
            },
            {
                "field":"field 2",
                "summary":"summary 2"
            },
            {
                "service":"service 3",
                "summary":"summary 3"
            }
        ],
        "2012-12-10":[
            {
                "field":"field 1",
                "summary":"summary 1"
            },
            {
                "field":"field 2",
                "summary":"summary 2"
            }
        ],
        "2012-12-31":[
            {
                "field":"field 1",
                "summary":"summary 1"
            }
        ]
    },
    "Data 2":{
        "2013-01-4":[
            {
                "field":"field 1",
                "summary":"summary 1"
            },
            {
                "field":"field 2",
                "summary":"summary 2"
            },
            {
                "field":"field 3",
                "summary":"summary 3"
            }
        ],
        "2013-01-8":[
            {
                "field":"field 1",
                "summary":"summary 1"
            },
            {
                "field":"field 2",
                "summary":"summary 2"
            }
        ],
        "2013-01-25":[
            {
                "field":"field 1",
                "summary":"summary 1"
            }
        ]
    },
    "Data 3":{
        "2013-02-09":[
            {
                "field":"field 1",
                "summary":"summary 1"
            },
            {
                "field":"field 2",
                "summary":"summary 2"
            },
            {
                "field":"field 3",
                "summary":"summary 3"
            }
        ]
    }

} 

SBJSONを使用して解析するにはどうすればよいですか?

助けてください

前もって感謝します

4

4 に答える 4

2

JSONを解析するには、1行のコマンドです。iOS 5以降に組み込まれているJSONパーサーを使用する場合は、次NSJSONSerializationのようにします。

NSError *error;
NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:data
                                                           options:0
                                                             error:&error];

SBJSONを使用する場合は、次のようになります。

SBJsonParser *parser = [[SBJsonParser alloc] init];
NSDictionary *dictionary = [parser objectWithData:data];

とにかく、JSONをに入れたので、NSDictionary先に進んで適切にナビゲートできます。例:

NSDictionary *data1 = [dictionary objectForKey:@"Data 1"];
NSArray *arrayDecFirst2012 = [data1 objectForKey:@"2012-12-01"];
NSDictionary *firstDictionaryInDecFirst2012 = [arrayDecFirst2012 objectAtIndex:0];
NSString *fieldOne = [firstDictionaryInDecFirst2012 objectForKey:@"field 1"];

または、新しい添え字表記を使用する場合は、次のようになります。

NSDictionary *data1 = dictionary[@"Data 1"];
NSArray *arrayDecFirst2012 = data1[@"2012-12-01"];
NSDictionary *firstDictionaryInDecFirst2012 = arrayDecFirst2012[0];
NSString *fieldOne = firstDictionaryInDecFirst2012[@"field 1"];
于 2013-01-25T03:00:58.317 に答える
1

「きれいに印刷された」場合、JSONの最初の部分は次のようになります-

{
    "Data 1":{
        "2012-12-01":[
            {
                "field 1":"field 2",
                "summary":"summary 1"
            },
            {
                "field":"field 2",
                "summary":"summary 2"
            },
            {
                "service":"service 3",
                "summary":"summary 3"
            }
        ],
        "2012-12-10":[
            {
                "field":"field 1",
                "summary":"summary 1"
            },
            {
                "field":"field 2",
                "summary":"summary 2"
            }
        ],
        "2012-12-31":[
            {
                "field":"field 1",
                "summary":"summary 1"
            }
        ]
    },
    "Data 2":{
        "2013-01-4":[

JSONの最も外側の部分は辞書です(JSONはそれを「オブジェクト」と呼んでいます)-オープニングのためにわかります{。その辞書には、「データ1」と呼ばれるキーとオブジェクトのペアがあります。{オブジェクトは、最初のキーとオブジェクトのペアが「2012-12-01」と呼ばれる辞書(別の)です。この2番目のペアのオブジェクトは、[3つの辞書を含む配列()です。等。

于 2013-01-25T01:47:31.553 に答える
1

私はSBJSONを具体的に使用したことはありませんが、その外観からすると、次のことができるはずです。

(これは、JSONが現在NSStringであると想定しています)

NSDictionary *arrayOfJSONString = [SBJsonObject objectWithString:jsonString];

またはそれに似たもの。

個人的にはJSONKitを使うこともあります。それは小さく、プロジェクトに含めるのは.h/.mだけです。(RestKitにも含まれています)。この場合、次のようにします。

NSDictionary *jsonDict = [jsonString objectFromJSONString];

次に、次のように使用できます。

NSDictionary *dataOne = [jsonDict objectForKey:@"Data 1"];

代わりにObjc-Cクラスを作成したい場合は、RestKitを見てみましょう。

于 2013-01-25T02:56:53.667 に答える
1

このチュートリアルをステップバイステップでお読みください

iOSでのJSONの操作

それでも問題が発生することをお知らせください

于 2013-01-25T03:33:19.740 に答える