Скачивание и разбор JSON-комплекта на iOS - PullRequest
0 голосов
/ 29 сентября 2011

Я пытаюсь проанализировать это с веб-сервера на просмотр таблицы в iOS

{
  "transactions": [
    {
    "ID": "350",
    "description": "Macbook Pro 17 inch",
    "price": "2811.83"
    },
    {
    "ID": "351",
    "description": "Macbook - white",
    "price": "1720.10"
    },
    {
    "ID": "352",
    "description": "iPad 2",
    "price": "650.00"
    },
    {
    "ID": "353",
    "description": "Macbook Pro 17 inch",
    "price": "3233.98"
    },
    {
    "ID": "354",
    "description": "Macbook Pro 15 inch",
    "price": "2100.55"
    },
    {
    "ID": "355",
    "description": "Macbook Air",
    "price": "899.99"
    },
    {
    "ID": "356",
    "description": "Mac Pro",
    "price": "3400.77"
    }
  ]
}

Единственное, чего я хочу от этого, - это описания и цены. Мне нужно сложить цену каждого предмета и получить общую сумму. Каждое имя транзакции должно быть сохранено в NSArray, а затем отображено в UITableView.

Любая помощь? JSONkit не дает мне парсер SBJSON

Ответы [ 2 ]

4 голосов
/ 30 сентября 2011

Мне очень понравился JSONKit из-за его простоты и скорости.Вы должны понять, что он возвращает конструкцию верхнего уровня как объект - так что вы должны подумать об этом.Это будет NSDictionary (так что вы можете указать его тип), и он будет иметь один ключ «транзакции».

Этот ключ будет возвращать NSArray объектов NSDictionary, каждый из которых будет иметь идентификатор ключа, описание,и цена.

Примерно так (где itemListData - это данные JSON, полученные, например, из URL):

JSONDecoder *decoder = [JSONDecoder decoderWithParseOptions:JKParseOptionStrict];
NSData *immutableItemList = [itemListData copy];
NSArray *returnedData = (NSArray *) [[decoder objectWithData:immutableItemList] objectForKey:@"transactions"];

Итак, мы взяли необработанные данные JSON, создали экземплярдекодер, затем декодировал его в словарь - и извлекал объект 1 в словаре (как массив в данном случае, потому что это то, что он есть).Не так уж плохо для новичка, а?

(Я должен добавить - причина, по которой я делаю неизменную копию NSData, заключается в том, что этот фрагмент кода загружается асинхронно и запускается методом connectionDidFinishLoading.)

1 голос
/ 29 сентября 2011

Эй, чувак, так что я сделал в прошлом, зайти на Facebook и скачать их разработчика SDK.В этом SDK является отличным инструментом анализа JSON.Вы можете найти его здесь http://developers.facebook.com/docs/reference/iossdk/ Затем вы просто добавляете это в свой проект и в заголовке делаете

 #import "JSON.h"

, а затем, когда получаете эту строку, вы говорите

NSDictionary *data = [my_data_string JSONValue];
NSArray *transactions = [data objectForKey:@"Transactions"];

и это должно работать:)

...