-1

こんにちは、iOS でローカル データを json 形式に変換しようとしています。フォーマットは次のとおりです。

{
    "answers": [
        {
            "question_id": 2,
            "answer": "4",
            "question_instance_id": 146
        },
        {
            "question_id": 2,
            "answer": "4",
            "question_instance_id": 147
        },
        {
            "question_id": 2,
            "answer": "4",
            "question_instance_id": 148
        },
        {
            "question_id": 3,
            "answer": "Hdhd",
            "question_instance_id": 149
        }
    ],
    "last_name": "Jd",
    "first_name": "Js",
    "survey_id": 41
}

json エンコーディングについて説明しているさまざまなブログを調べました。しかし、この例で示されているように、ネストされた辞書を処理してデータを json 形式に変換する方法をまだ理解できていません。

助けてくれてありがとう。

4

3 に答える 3

1

これには使用する必要があり、NSJSONSerialization必要なことは自動的に行われます。こちらのリンクもぜひご覧ください。ありがとう


これは、リンクされたワンダーリッヒ チュートリアルの 30 秒の要約です。乾杯。

json について知っておく必要のあるすべての情報があり、SO でスクロールすることさえありません :)

#define exampleURL [NSURL URLWithString:\
 @"http://api.kivaws.org/v1/loans/search.json?status=fundraising"]
-(void)viewDidLoad { [super viewDidLoad]; [self _jsonGet]; }

-(void)_jsonGet
    {
    NSLog(@"I'm getting some JSON data from the net.");
    dispatch_async(dispatch_get_main_queue(),
        ^{
        NSData* dataFromNet = [NSData dataWithContentsOfURL:exampleURL];
        [self _jsonParse:dataFromNet];
        });
    }

-(void)_jsonParse:(NSData *)jdat
    {
    NSLog(@"I did seem to get the data .. now parsing" );
    NSError* error;
    NSDictionary* jdic = [NSJSONSerialization JSONObjectWithData:jdat
        options:kNilOptions
        error:&error];
    // do this NSLog(@"%@", jdic); to see the fields available

    NSArray* latestLoans = [jdic objectForKey:@"loans"];
    NSLog(@"loans.count: %d \n\n\n", latestLoans.count);
    NSDictionary *oneLoan = latestLoans[3];
    NSLog(@"loans[3]: %@ \n\n\n\n", oneLoan);

    NSLog(@"...name: %@ \n\n\n\n", [oneLoan objectForKey:@"name"] ); 
    NSLog(@"...sector: %@ \n\n\n\n", [oneLoan objectForKey:@"sector"] ); 
    }
于 2013-10-24T15:07:26.077 に答える
0

iOS 配列と辞書に精通している場合は、JSON との関係を視覚化できます。JSON は配列と辞書のエンコーディングにすぎないため、データを自分が持っているものに関連する構造に一致させれば、JSON エンコーディングは同じになります。

上記の JSON を次のような JSON パーサーに貼り付ける場合:

JSON パーサー ページ

基礎となる構造を見ることができます:

"Answers"、"last_name"、"first_name"、"survey_id" の 4 つのキーと値のペアを持つ辞書。キーのすべての値はプリミティブ、文字列、または数値です。最初の「回答」を除き、その値はサブ辞書の配列であり、すべてキー「question_id」、「answer」、および「question_instance_id」があります。

于 2013-10-24T15:15:34.597 に答える
0

単に:

  NSDictionary *entireJson = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];

内部のロジックNSDictionaryは JSON と同じです。あなたの答えとして、次のようなことができます:

NSArray *answersArray = entireJSon[@"answers"];

簡単に言うと、jsonが有効であることを確認してください(この場合は...)

于 2013-10-24T15:05:20.113 に答える