0

JSON から Objective-C へのリレーショナル オブジェクト マッピングを行うライブラリまたはフレームワークを探しています。つまり、JSON を含むオブジェクト、オブジェクトの配列、およびオブジェクトの辞書をカスタム オブジェクトにマップする必要があります。

何かのようなもの:

DataObject {
    "user" : {
        "name":"Peter",
        "id":1234
    }
    "place": "UK"
    "job": {
        "title" : "CTO",
        "salary" : 1234567
    }
    "employess": [
        {
            "name":"Carlton",
            "id":1235
        },
        {
            "name":"Hugo",
            "id":12346
        }]
}

したがって、DataObject、UserObject、および UserObject で構成される employees 配列があります。JSONからDataObjectへのマッピングが「自動的に」行われるようにしたいと思います。もちろん、ネストされた各ネストを手動でマッピングするのではなく、オブジェクトとオブジェクトクラスの関係を記述し、これからマッピングを行うことを意味します物体。(最初のレベルのネイティブ Objective-C プロパティは、setValue:forKey およびその他の KVO メソッドを使用して簡単に実行できますが、それ以降は複雑になります)。

私はRestKitをテストしてきましたが、そのフレームワークから必要な機能を選択して選択する方法はないようです。それはすべてであるか、まったくないかのどちらかであり、私のニーズには多すぎることがわかりました.

これを行うことができるライブラリなどに精通している人はいますか?

前もって感謝します。

4

2 に答える 2

2

JSON を Objective-C オブジェクトにマップするために、RestKit を試しました。少し前に使っていたので、私の批判はもう当てはまらないかもしれません。
私が見つけたもの:いいアイデア。プラグインするのにそれほど複雑ではありません。それがうまくいくなら、あなたにとって素晴らしいことです。しかし、そうでない場合、またはもう少しプッシュする必要がある場合は、頑張ってデバッグしてください。
私はそれに投資した時間を後悔しています。

JSON から Objective-C へのオブジェクトのみを探しています。その逆ではありません。SO でJTObjectMappingへのリンクを見つけましたが、元の答えが見つかりません。より軽量で、私が探していたものに近いようですが、試す機会がありませんでした.

他の同様のクラス: jastor .

RestKit はすべてを処理しようとしたのに対し、RestKit は 1 つのジョブのみを処理するため、RestKit よりもこの 2 つのクラスのアプローチを好みます。

于 2012-11-13T09:42:53.677 に答える
0

上に投稿したものは有効な JSON ではありません。有効な JSON にした場合、特定のスキーマがなければ、やりたいことは不可能です。

{
    "DataObject": {
        "user": {
            "name": "Peter",
            "id": 1234
        },
        "place": "UK",
        "job": {
            "title": "CTO",
            "salary": 1234567
        }
    }
}

Dataobject はディクショナリですか、それともオブジェクトですか? ユーザーまたはジョブはどうですか? User は NSUser のインスタンスで、job は NSDictionary とは何ですか?

一方、既知のスキーマがある場合:-

[
    {
        "class": "DataObject",
        "properties": {
            "user": {
                "class": "User",
                "properties": {
                    "name": "Peter",
                    "id": 1234
                }
            },
            "place": "UK",
            "job": {
                "title": "CTO",
                "salary": 1234567
            }
        }
    }
]

有効な 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;
} 
于 2011-05-30T08:48:12.077 に答える