NSOrderedSetsをJSONにシリアライズおよびデシリアライズするためのオプションは何ですか?私はiOS5/Objective-Cを使用しています。私は、私は自分をロールバックことができると思いますが、私はJSONがset
データ型を持っていない、とそのArray
が注文されているので、あなたがNSArray
に変換することができ...そこにいくつかの良い既存のフレームワークがあるiOS内のNSOrderedSetのJSONシリアル化
答えて
あなたの唯一のオプションはおそらく、オープンソースのライブラリーにアクセスしたり、JSONシリアライザの実装方法のコードを見てみましょうします。その後、あなたの目的のために図書館を拡張することができます。 「拡張する」とは、既存のライブラリから可能な限り活用することです。独自のシリアライザを最初から作成することは、多くの作業につながる可能性があるためです。
通常、JSONライブラリは、JSONタイプと対応するObjective-Cタイプ(クラス)間のマッピングを定義します。たとえば、JSON配列はNSArray/NSMutableArrayにマップされ、JSONオブジェクトはNSDictionary/NSMutableDictionaryなどにマップされます。
したがって、「JSONシリアライザ」は「マップされた」Objective-Cオブジェクトをシリアライズする方法JSON要素に追加します。この動作を実装する1つの方法は、マッピングされたObjective-Cクラスにカテゴリを追加することです。
"ライブラリを拡張する"場合(ライブラリと実装に応じて)、カスタムクラスのカテゴリを追加し、それに応じて実装すれば十分でしょう。
私はJSONライブラリの著者です。 JSONシリアライザで使用できるカスタムクラスのカテゴリを作成することはそれほどの労力を要しません。エンハンスメントリクエストでニーズを指定するかもしれないので、カスタムクラスを追加しやすくするためにライブラリを調整することができます。次のように
あなたのカテゴリーは、次のようになります。 - マイライブラリにいくつかの調整を行った後、
@interface NSOrderedSet (JPJsonWriter) <JPJsonWriterInserterProtocol>
@end
@implementation NSOrderedSet (JPJsonWriter)
- (int) JPJsonWriter_insertIntoBuffer:(NSMutableDataPushbackBuffer*)buffer
encoding:(JPUnicodeEncoding)encoding
options:(JPJsonWriterOptions)options
level:(NSUInteger)level
{
return insertJsonArray(self, buffer, encoding, options, level);
}
@end
をこれは、あなたが何をすべきか、実際にすべてです。ただし、これは使用しているJSONライブラリに依存しています。私のJSONライブラリはhereにあります。改善要求を提出してください - ありがとうございます。
を想定しています最初にしてこのように、シリアライズ:
NSOrderedSet *os = [NSOrderedSet orderedSetWithObjects:@"1", @"2", @"3", nil];
NSArray *jsonArr = [os array];
// JSON Data
NSData *json = [NSJSONSerialization dataWithJSONObject:jsonArr options:0 error:nil];
// JSON String representation
NSString *jsonString = [[NSString alloc] initWithData:json encoding:NSUTF8StringEncoding];
- 1. GSON-JSONクラス内のオブジェクトの逆シリアル化
- 2. SpidermonkeyのJSONシリアル化
- 3. AndroidのJSON - シリアル化
- 4. カスタムJsonのシリアル化
- 5. JSONシリアル化WP7
- 6. 逆シリアル化JSON
- 7. Swift JSONのシリアル化エラー
- 8. ジャンクションのカスタムJSON逆シリアル化
- 9. redisノードライブラリリスト値のjsonシリアル化
- 10. 逆シリアル化JSONのジャクソン
- 11. JSON JAXBオブジェクト型のシリアル化
- 12. ジャクソンカスタムブールjsonプロパティの逆シリアル化
- 13. SpringブートJSONシリアル化
- 14. エンティティフレームワーク:シーンの背後にあるJSON列のシリアル化/逆シリアル化
- 15. コード内のJSON文字列を逆シリアル化する
- 16. 複合クラス内の多態リフト・json逆シリアル化
- 17. Javascript JSON日付逆シリアル化
- 18. .NET 2.0でJSONにシリアル化
- 19. Jsonのクラスへの逆シリアル化
- 20. Django jsonのシリアル化の問題
- 21. jqGridの編集データをJSONにシリアル化
- 22. asp.net mvc jsonのシリアル化属性
- 23. restsharp WP7 JSON日時フォーマットのシリアル化
- 24. Web Api 2 - カスタムデータ型JSONのシリアル化
- 25. JSON逆シリアル化とVB.NETの問題
- 26. 整数配列のJava JSONシリアル化?
- 27. Rust&Serde JSON逆シリアル化の例?
- 28. JSON値としてプロパティをシリアル化/逆シリアル化する
- 29. NewtonSoft JSONのDateTimeシリアル化対ASP.NET MVC Controller.Json DateTimeのシリアル
- 30. jsonオブジェクトを逆シリアル化し、iOSのNSDictionaryに割り当てる方法
SetをArrayに変換する前にSetに変換したくない特定の理由はありますか? – Alladinian
@Alladinian - 私は多くのネストされたセット/配列を含むモデルを持っています。それは私が連載するのに必要なモデルです。モデル全体に対してNSJSONSerializationを使用することは素晴らしいことですが、モデル全体をNSArderedSetをNSArraysに変換する必要があります。私はモデル全体を渡すことができるシリアライゼーションクラスを探しています。これは、このようにモデルを前処理することなくNSOrderedSetsを処理します。 – Journeyman
これは意味があります。私たちは 'NSManagedObjects'について話していますか? – Alladinian