Вернуть массив в JSON как массив или строку для двумерного массива - PullRequest
0 голосов
/ 01 июля 2019

Используя API (который я пишу) мне нужно вернуть довольно простой массив с сервера, работающего на PHP, с использованием JSON для использования в Objective-C.

На телефоне код будет добавлен вмассив следующей формы:

NSArray *carPics =@[@[@"ford",@"ford.png"],@[@"bmw",@"bmw.png"];

Я могу вернуть вышеупомянутое в JSON в виде строки, избегая всех специальных символов - немного утомительно, но возможно, или заменяя специальные символы магическими строками, такими как ***.а затем сделать строку в виде массива, используя:

NSArray *arr = [str componentsSeparatedByString:@"***"];

С другой стороны, я мог бы создать массив в PHP и вернуть массив в телефон, который затем должен был бы преобразовать массив в Objective-C,

$carpics = array(
  array(
    "ford" => "ford.png",
    "bmw" => "bmw.png",
  );

Недостатком этого является то, что это повлечет за собой большее количество конверсий.

Или приближается лучше, или они шесть из одного, полдюжины из другого?

Редактировать

В настоящее время JSON, отправленный сервером, выглядит следующим образом:

{"carpics":{"ford":"ford.png","bmw":"bmw.png"}}

Я пытаюсь декодировать его на телефоне с помощью:

NSDictionary* json = [NSJSONSerialization JSONObjectWithData:jsonFeed
                                                         options:kNilOptions
                                                           error:&error];


        NSMutableArray *carPics = [[json objectForKey:@"carpics"]mutableCopy];
NSArray *myArray = carPics;

Это отлично работает.Я подтвердил, что JSON это словарь.К сожалению, я также с помощью kindOfClass проверил, что carpics или myArray - это не массив, как я хочу, а словарь.

Если я пытаюсь получить первый элемент myArray, используя:

 NSArray *object = myArray[i];

Я получаю сообщение об ошибке:

[__NSDictionaryM objectAtIndexedSubscript:]: unrecognized selector sent to instance 0x174449420'

Я действительно хочу массив, так как я хочу пройти по каждому элементу массива по порядку по одному.

Что мне нужно сделатьдля моего JSON, чтобы быть правильным массивом массивов.Я могу либо изменить JSON с сервера, либо обработать JSON по-другому на телефоне.

Вот код PHP, который создает JSON:

header("Content-Type: application/json");
$ret = array("ford"=>"ford.png","bmw"=>"bmw.png");
echo json_encode(array('carpics'=>$ret));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...