objective-c和java下解析物件類型和數群組類型JSON字串

來源:互聯網
上載者:User

標籤:

首先講objective-c如何?:

這裡需要用到2個外掛程式,一個是JSONKit,另一個是Jastor,一共包含6個檔案,3個.h標頭檔和3個.m實現檔案。在ARC的工程中如何匯入不支援ARC的第三方工具請看這篇文章:iOS在支援arc的工程中,匯入不支援arc的第三方的外掛程式

具體檔案在網上都比較好找,自己去下載即可。

NSObject類型的json字串轉換為對象

大體的思路是這樣,首先將json字串先轉化成NSDictionary,然後再通過參數是NSDictionary的初始化方法來產生相應的對象。

其中產生NSDictionary的過程是由JSONKit提供的NSString的objectFromJSONString方法來完成的。

而將NSDictionary產生相應對象的過程是有Jastor來完成,這個過程有幾個要求:

  1. 你的對象必須繼承Jastor對象;
  2. 你的對象的屬性名稱必須和json字串的屬性名稱對應;
  3. 如果你的對象中包含自訂對象的列表,則需要為這個屬性單獨寫一個類方法,規則是"屬性名稱_class";

例子如下:

JSON字串的結構如:

其中包含一個班級的資訊,和班級中的3個學生的資訊。

對應的資料結構如下:

BMclass.h:

123456 @interface BMClass : Jastor@property (strong,nonatomicNSString* name;@property (strong,nonatomicNSString* grade;@property (strong,nonatomicNSArray* students;+(id)students_class;@end

BMclass.m:

1234567 @implementation BMClass@synthesize name,grade,students; +(id)students_class{    return [BMStudent class];}@end

BMStudent.h:

12345 @interface BMStudent : Jastor@property (strong,nonatomicNSString* name;@property (strong,nonatomicNSString* sex;@property (nonatomicint age;@end

BMStudent.m:

123 @implementation BMStudent@synthesize name,age,sex;@end

具體的解析代碼如下:

12 NSDictionary* dic = [jsonStr objectFromJSONString];BMClass* c = [[BMClass alloc]initWithDictionary:dic];

運行後的解析的結果如(Debug的):

  

NSArray類型的json字串轉換為對象 

如果您獲得的字串不是"{}"類型的,而是"[]"類型的,那麼以上的解析方式不適用,需要將

NSDictionary* dic = [jsonStr objectFromJSONString];

修改為

NSArray* array = [jsonStr objectFromJSONString];

這時獲得的數組是JKDictionary類型,如下;

要想將array中的對象轉換成自己的對象,需要再遍曆一邊數組,使用

BMClass* c = [[BMClass alloc]initWithDictionary:dic];

為每個對象進行轉換即可。

=================================這是分割線=========================================

現在講java如何?:

java下需要用到一個gson.jar包。

java下解析json利用gson比iOS下略簡單,思路是擷取到要解析的對象的Type,然後利用GSON提供的fromJson方法解析就好了。

沿用上邊iOS的json字串舉例:

BMClass.class代碼如下:

12345 public class BMClass {    public String name;    public String grade;    public List<BMStudent> students;}

BMStudent.class代碼如下:

12345 public class BMStudent {    public String name;    public String sex;    public int age;}
Object類型的json字串轉換為對象

解析的過程代碼如下:

123 Gson gson = new Gson();Type classType = new TypeToken<BMClass>() {}.getType();BMClass c = gson.fromJson(jsonStr, classType);

解析的結果如下(Debug):

 

List類型的json字串轉換為對象

解析的地方只更換Type的類型即可,例如:

1 Type classType = new TypeToken<List<BMClass>>() {}.getType();

文章結束。

 

objective-c和java下解析物件類型和數群組類型JSON字串

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.