Сопоставление объектов в target-c (iphone) из JSON - PullRequest
6 голосов
/ 13 апреля 2010

Для моего приложения для iPhone я использую сервис RESTful и получаю JSON. Я нашел библиотеки для десериализации этого в NSDictionary. Однако мне интересно, есть ли какие-нибудь библиотеки для десериализации списка JSON / NSDictionary / Property в мой объект (произвольный на моей стороне).

Java-эквивалентом будут объектно-реляционные сопоставления, хотя вид сопоставления объектов, который я ищу, относительно прост (простые типы данных, никаких сложных отношений и т. Д.).

Я заметил, что Objective-C действительно обладает самоанализом, поэтому теоретически это возможно, но я не нашел библиотеки для этого.

Или есть простой способ загрузить объект из объекта NSDictionary / Property List, который не требует модификации каждый раз, когда объект изменяется?

Например:

{ "id" : "user1",
  "name" : "mister foobar"
  "age" : 20 }

загружается в объект

@interface User : NSObject {
 NSString *id;
 NSString *name;
 int *age;
}

Ответы [ 3 ]

5 голосов
/ 13 апреля 2010

Взгляните на протокол NSKeyValueCoding. В частности, методы setValuesForKeysWithDictionary: и dictionaryWithValuesForKeys:

4 голосов
/ 21 мая 2012

Я сделал фреймворк, чтобы сделать это автоматически. Выезд.

https://github.com/dchohfi/KeyValueObjectMapping

1 голос
/ 13 апреля 2010

Посмотрите на проект Loid на Sourceforge. Мое намерение состоит в том, чтобы предоставить то, о чем вы говорите.

Прямо сейчас фреймворк может реконструировать мета-описание объекта (например, ваш объект «Пользователь») и может сериализоваться в объект LoidTypeData и из него. Мое намерение состоит в том, чтобы создать экземпляр LoidTypeData из входящего блока JSON и затем связать его с объектом. Конечно, обратное тоже будет.

Это с открытым исходным кодом и GPL. Вам нужно будет получить доступ к коду из SVN на данный момент, не знаю, как создать дистрибутив для Mac.

- Фрэнк

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...