Hľadám knižnicu alebo rámec, ktorý to robíJSON na mapovanie vzťahových objektov Cieľ-C. t.j. musím mapovať JSON obsahujúce objekty, pole objektov a slovníky objektov na moje vlastné objekty.
niečo ako:
DataObject {
"user" : {
"name":"Peter",
"id":1234
}
"place": "UK"
"job": {
"title" : "CTO",
"salary" : 1234567
}
"employess": [
{
"name":"Carlton",
"id":1235
},
{
"name":"Hugo",
"id":12346
}]
}
Takže existuje DataObject UserObject azamestnanecké pole pozostávajúce z UserObjects. Chcel by som, aby sa mapovanie z JSON na môj DataObject stalo "automaticky", samozrejme myslené ako by som chcel popísať objekty a vzťahy v triede Object a mať mapovanie vykonané z toho namiesto ručného mapovania každého vnoreného objekt. (Vlastnosti prvého objektu na úrovni prvej úrovne sa dajú ľahko vykonať pomocou metódy setValue: forKey a iných metód KVO, ale odtiaľ sa to komplikuje).
Testoval som program RestKit, ale zdá sanie je žiadny spôsob, ako vybrať a vybrať, ktorú funkčnosť potrebujete z tohto rámca, je to buď všetko, alebo nič z toho, a ja to považujem za príliš veľa pre moje potreby.
Je niekto oboznámený s knižnicou atď. Tam, kde to môže robiť?
Vopred ďakujem.
odpovede:
0 pre odpoveď č. 1To, čo ste uverejnili vyššie, nie je platný JSON.Ak ste urobili platné JSON, čo chcete robiť, je nemožné bez konkrétnej schémy, napr.
{
"DataObject": {
"user": {
"name": "Peter",
"id": 1234
},
"place": "UK",
"job": {
"title": "CTO",
"salary": 1234567
}
}
}
Je dátový objekt slovník alebo objekt? A čo užívateľ alebo práca? Čo je používateľom je inštancia NSUser a práca je NSDictionary?
Na druhej strane, ak máte známu schému:
[
{
"class": "DataObject",
"properties": {
"user": {
"class": "User",
"properties": {
"name": "Peter",
"id": 1234
}
},
"place": "UK",
"job": {
"title": "CTO",
"salary": 1234567
}
}
}
]
nepotrebujete rámec, pretože je triviálne mapovať svoje objekty sami, akonáhle máte platnú JSON.
createWithDict(dict) {
var newOb = create new(dict["class"]);
dict.properties.each( val, key ) {
if(val is dictionary && val.hasproperty("class"))
val = createWithDict(val)
newOb[key] = val
}
return newOb;
}
2 pre odpoveď č. 2
Ak chcete mapovať objekt JSON na objekty typu Objective-C, vyskúšal som program RestKit. Použil som to už pred chvíľou, takže moje kritiky už nemusia platiť.
Čo som zistil: pekný nápad. Nie je príliš zložité na pripojenie. Ak to funguje, skvelé pre vás. Ale ak nie, alebo ak ho budete musieť tlačiť o niečo ďalej, veľa šťastia na ladenie.
Je mi ľúto, že som do toho investoval.
Ja len hľadám JSON na Objective-C objekty, nie naopak. Našiel som odkaz na SO JTObjectMapping - ale nemôžem nájsť pôvodnú odpoveď. Zdá sa ľahšia a blízka tomu, čo som hľadala, ale ja som nemala príležitosť vyskúšať to.
Ďalšia podobná trieda: jastor.
Dávam prednosť prístupu týchto dvoch tried cez službu RestKit, pretože sa stará o jedno zamestnanie, zatiaľ čo spoločnosť RestKit sa pokúsila zvládnuť všetko.