Squeak.ru - шаблоны программирования

как получить данные из этой структуры, JSONKit

Ниже представлен контент, расположенный в файле json.txt.

{
    "data": [
        {
            "keyId": 3,
            "title": "This is a fundraiser 1",
            "budget": "1000",
            "users": {
                "user": [
                    {
                        "id": "3",
                        "first_name": "A1",
                        "last_name": "A11",
                        "is_owner": "false"
                    },
                    {
                        "id": "2",
                        "first_name": "B1",
                        "last_name": "B11",
                        "is_owner": "true"
                    }
                ]
             }      
        }
    ]
}

Что я делаю, чтобы получить idKey и title и budget

@implementation Account
@synthesize arr;
-(void)parse {
             NSString *filePath    =   [[NSBundle mainBundle] pathForResource:@"fundraiser_json" ofType:@"txt"];
             NSString *jsonString  =   [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];

             NSDictionary    *dict =   [jsonString objectFromJSONString];
             self.arr              =   [dict objectForKey:@"data"];

             for ( NSDictionary  *acc in self.arr ) {

                 Account  *account     =   [[Account alloc] init];

                 [account setKeyID:   [acc objectForKey:@"keyId"]];
                 [account setTitle:   [acc objectForKey:@"title"]];
                 [account setBudget:  [acc objectForKey:@"budget"]]; 
             } 
    }       

Затем я пытаюсь получить доступ к users и получить некоторую информацию о каждом user в нем, но я не могу

Может кто-нибудь помочь мне, как получить доступ и получить эти данные.

14.08.2012

  • Вы предполагаете, что users - это массив? Это не указанный выше JSON, это объект (NSDictionary). 15.08.2012

Ответы:


1

Способ доступа к вашим пользовательским данным аналогичен тому, как вы получаете доступ к данным своей учетной записи. Во вложенной структуре вашего объекта JSON пользователи являются свойством вашей учетной записи. Этот объект представляет собой словарь с одним свойством «пользователь», представляющим собой массив. Каждый элемент этого массива представляет собой объект с четырьмя свойствами: id, first_name, last_name и is_owner.

Поэтому, когда вы анализируете свой объект, это просто набор вложенных NSDictionaries и NSArray. Вы можете сделать это следующим образом:

...
for ( NSDictionary  *acc in self.arr ) {

    NSDictionary *users = (NSDictionary*)[acc objectForKey:@"users"];
    NSArray *userArray = (NSArray*)[users objectForKey:@"user"];

    for (NSDictionary *user in userArray) {
        NSString *id = [user objectForKey:@"id"];
        NSString *firstName = [user objectForKey:@"first_name"];
        // etc.
    }
 }

РЕДАКТИРОВАТЬ: я написал этот ответ, чтобы проанализировать ваш JSON так, как он есть в вашем вопросе, но если у вас есть контроль над этой структурой, вам было бы лучше (и это имело бы больше смысла), чтобы свойство пользователей было массивом, который непосредственно содержит словари пользовательских данных. Возможно, это то, что вы хотели сделать в первую очередь, и почему у вас возникли проблемы с получением данных.

14.08.2012
  • У меня возникли проблемы с получением users, потому что я не обратил внимания, что users также является еще одним словарем. Спасибо за вашу помощь.. 15.08.2012

  • 2

    Когда вы конвертируете строку в объект JSON, она создает тип данных с древовидной структурой, с изменяемыми словарями и массивами. Документация по классу NSJSONSerialization резюмирует это. довольно хорошо.

    Я полагаю, если вы хотите получить доступ, например, к первому имени первого пользователя в списке, вам нужно будет написать вызов метода:

    [[[[acc objectForKey:@"users"] objectForKey:@"user"] objectForKey:@"first_name"] objectAtIndex:0];
    

    Однако я не уверен, что понял вашу проблему или это решает ее.

    14.08.2012
  • должно быть [[[[acc objectForKey:@"users"] objectForKey:@"user"] objectAtIndex:0] objectForKey@"first_name"]] 15.08.2012
  • Правильно, потому что пользователи — это массив. Спасибо. 15.08.2012
  • Новые материалы

    Угловая структура архитектуры
    Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

    «Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
    Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

    Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
    В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

    Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
    React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

    Создайте API с помощью Python FastAPI
    Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

    Веселье с прокси-сервером JavaScript
    Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

    Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
    Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...