【object c】Objective C中xml到json的轉換(二)

pengfoo發表於2013-07-12
之前發過一篇博文是說把xml格式轉換為json的,參見博文:()它的做法是先將xml轉換為NSDictionary,然後再將字典序列化為json,這樣只適合將xml原封不動轉換為json的場合,如果最後要轉換的json和原始的xml有一些區別(例如,json中欄位名稱與xml中有不一致,例如xml中屬性名稱採取的命名規則是單詞中加下劃線,json中採取駝峰命名法,或者xml中一些冗餘屬性需要去掉,或者json中要新增某些屬性,這些屬性值根據xml中相關屬性值計算而來),這些區別下,就不再適合這麼做了,因為對字典進行操作則非常困難。針對這種情況,這裡介紹另外一種方法,即先仍然將xml轉換為原始的NSDictionary,第二步,遍歷NSDictionary,拼湊出一個Object,然後利用github上開源的jsonModel的方法,將物件序列化為json字串。
 關於jsonModel,可以從(https://github.com/icanzilb/JSONModel)獲取。
以下參考:http://www.touch-code-magazine.com/JSONModel/
例如,你獲得瞭如下的json資訊:
{
  "idImage": 1, 
  "name": "house.jpg", 
  "copyright": {"author":"Marin Todorov", "year":2012} 
}


很容易為這個json建立model。首先為copyright model建立成如下:
@interface CopyModel: JSONModel
 
@property (strong, nonatomic) NSString* author;
@property (assign, nonatomic) int year;
 
@end


然後,定義對映的model,它包含了上面的copyright model,
#import "CopyModel.h"
@interface ImageModel: JSONModel
 
@property (assign, nonatomic) int idImage;
@property (strong, nonatomic) NSString* name;
@property (strong, nonatomic) CopyModel* copyright;
 
@end




最後,只要呼叫toJSONString方法即可方便的將物件轉換為json字串 。

相關文章