-5

私は の新人ですiOSjsonで以下を解析したいのUITableViewですが、その方法がわかりません。jsonを使用して解析することは知っていますNSURLが、この直接json解析では問題に直面しています。助けてください..ここにあります:

NSString *url = @"{\"LinkResult\":{\"0\":{\"Name\":\"Veeva - Devon1\",\"ButtonDisplay\":\"Veeva\",\"PasswordSaving\":\"Yes\",\"Status\":\"Success\",\"Message\":\"No Error\", \"Identifiers\": {\"Identifier1Name\": \"Identifier1value\",\"Identifier2Name\": \"Identifier2value\",\"Identifier3Name\": \"Identifier3value\"},}}}";

次のステップを教えてください...

4

6 に答える 6

3

これは JSON の構造です

{
    "LinkResult": {
        "0": {
            "Name": "Veeva - Devon1",
            "ButtonDisplay": "Veeva",
            "PasswordSaving": "Yes",
            "Status": "Success",
            "Message": "No Error",
            "Identifiers": {
                "Identifier1Name": "Identifier1value",
                "Identifier2Name": "Identifier2value",
                "Identifier3Name": "Identifier3value"
            }
        }
    }
}

任意のオンライン ジェネレーターを使用して json ファイルを作成し、プロジェクトに追加します。dataSource を保持するためのプロパティがあります。

- (void)viewDidLoad
{
    [super viewDidLoad];

    NSString *filePath = [[NSBundle mainBundle]pathForResource:@"Data"
                                                        ofType:@"json"];
    NSData *data = [[NSData alloc]initWithContentsOfFile:filePath];

    NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data
                                                         options:0
                                                           error:nil];

    //A dictionary which will contain info all users
    self.users = dict[@"LinkResult"];

}

#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [[self.users allKeys] count];;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

    // Configure the cell...

    NSArray *sortedKeys = [[self.users allKeys]sortedArrayUsingSelector:@selector(compare:)];
    NSString *key = sortedKeys[indexPath.row];

    NSDictionary *user = self.users[key]; 

    cell.textLabel.text = user[@"Name"];
    cell.detailTextLabel.text = user[@"Status"];

    return cell;
}

ソースコード

于 2013-05-24T05:40:23.383 に答える
0

これには、次のような NSJSONSerialization クラスを使用する必要があります。

NSData *json = [url dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *dataDictionary = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:nil];
NSDictionary *identifiers = [dataDictionary objectForKey:@"Identifiers"];
// Do stuff with the data

それが理にかなっていることを願っています。以下を使用して、JSON 文字列から要素を取得できます。

[dataDictionary objectForKey:@"ElementName"];
于 2013-05-24T05:20:38.197 に答える
0

解析するには、このように nsdictionary を使用できます...

NSData *json = [url dataUsingEncoding:NSUTF8StringEncoding];
    NSDictionary *dataDictionary = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:nil];
    NSDictionary *identifiers = [dataDictionary objectForKey:@"Your key"];

テーブルビューで表示するには、使用できます

arr = [[JSONObject objectForKey:@“results”] objectForKey:@“Your key”];

// and set cell text label as -

cell.textLabel.text =[[arr objectAtIndex:indexPath.row] objectForKey:@"Your key"];
于 2013-05-24T05:29:43.003 に答える