Как разобрать этот ответ и сохранить в массив в iphone - PullRequest
0 голосов
/ 30 января 2012

Я новичок в target-c, я выполнил разбор NSXML, но как разобрать этот ответ. Ответ:

Array
(
    [success] => 1
    [artworks] => Array
        (
            [0] => Array
                (
                    [id] => 105
                    [title] => asdasdfg
                    [height] => 0.000
                    [width] => 0.000
                    [depth] => 0.000
                    [medium] => 
                    [list_price] => 0
                    [status] => draft
                    [edition] => 
                    [editions] => 
                    [artist_proofs] => 
                    [displaydate] => 
                    [created] => 2011-05-23 16:36:56
                    [hash] => 98a0b94ad30cdda90f9a8195722869db
                    [artist] => Array
                        (
                            [first_name] => Kcho
                            [last_name] => 
                        )

                    [category] => 
                    [images] => Array
                        (
                            [primary] => Array
                                (
                                    [location] => http://staging.paddle8.com/assets/img/placeholder/145x145.jpg
                                    [width] => 145
                                    [height] => 145
                                    [type] => full
                                )

                        )

                )

            [1] => Array
                (
                    [id] => 104
                    [title] => asdasdfg
                    [height] => 23.000
                    [width] => 223.000
                    [depth] => 0.000
                    [medium] => Oil on canvas
                    [list_price] => 1
                    [status] => draft
                    [edition] => 
                    [editions] => 
                    [artist_proofs] => 
                    [displaydate] => 2009
                    [created] => 2011-05-23 12:36:10
                    [hash] => 98a0b94ad30cdda90f9a8195722869db
                    [artist] => Array
                        (
                            [first_name] => Kcho
                            [last_name] => 
                        )

                    [category] => 
                    [images] => Array
                        (
                            [primary] => Array
                                (
                                    [location] => http://staging.paddle8.com/assets/img/placeholder/145x145.jpg
                                    [width] => 145
                                    [height] => 145
                                    [type] => full
                                )

                        )

                )
        )

Ответы [ 2 ]

3 голосов
/ 30 января 2012

Ответ, который вы опубликовали, выглядит как PHP print_r массива.

Как предложил Терент в своем комментарии, самый простой способ для вас разобрать это, если сервер закодирует этот массив в JSON.

Это очень тривиально, все, что вашему клиенту нужно сделать на стороне сервера, это заменить

print_r($array);

на

json_encode($array);

После этого вы сможете использоватьiOS 5 JSON Framework или любые внешние JSON Framework (YAJLiOS, JSONKit, SBJSON и т. д.) для удобного анализа ответа.

РЕДАКТИРОВАТЬ:

Ссылка выопубликовано в комментариях к вопросу http://staging.paddle8.com/api_v1/artworks/get_gallery_artworks?gallery_id=19 действительно возвращает JSON.

Чтобы разобрать это, вам нужно будет использовать JSON framework.Если ваше приложение должно быть совместимо с версиями iOS ниже 5.0, я предлагаю вам использовать инфраструктуру JSONKit, которая, как было показано, является самым быстрым анализатором JSON.

Вы можете получить его здесь: https://github.com/johnezang/JSONKit

После того, как вы импортировали эту платформу в свой проект, вы можете проанализировать свой ответ JSON следующим образом:

NSString *jsonString = yourResponseString; // yourResponseString is the NSString object you get in response to your call to the API

NSDictionary *dict = [jsonString objectFromJSONString]; // This will return either an NSDictionary or NSArray depending on the structure of the jsonString, in your case, this will be a NSDictionary

// Now to get the array of "properties"
NSArray *propertiesArray = [dict objectForKey:@"properties"];

// Now you have an NSArray will all the "properties" objects in the JSON, you can cycle through this array to create all your objects accordingly

for(int i=0; i<[propertiesArray count]; i++) {

    // get the dictionary for each properties object
    NSDictionary *propertyDict = [propertiesArray objectAtIndex:i];

    // now you can access all the variables in the properties object

    // id
    int id = [[propertyDict objectForKey:@"id"] intValue];

    // title
    NSString *title = [propertyDict objectForKey:@"title"];

    // etc ...

}

Надеюсь, это поможет

1 голос
/ 01 февраля 2012

Как указывают @Mutix и @Terente Ionut Alexandru, это вывод в формате JSON.Попробуйте эту ссылку, она показывает, как выполнить анализ JSON в IOS.

http://www.touch-code-magazine.com/tutorial-fetch-and-parse-json/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...