在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
首先讲objective-c如何实现: 这里需要用到2个插件,一个是JSONKit,另一个是Jastor,一共包含6个文件,3个.h头文件和3个.m实现文件。在ARC的工程中如何导入不支持ARC的第三方工具请看这篇文章:iOS在支持arc的工程中,导入不支持arc的第三方的插件 具体文件在网上都比较好找,自己去下载即可。 大体的思路是这样,首先将json字符串先转化成NSDictionary,然后再通过参数是NSDictionary的初始化方法来生成相应的对象。 其中生成NSDictionary的过程是由JSONKit提供的NSString的objectFromJSONString方法来完成的。 而将NSDictionary生成相应对象的过程是有Jastor来完成,这个过程有几个要求:
例子如下: JSON字符串的结构如下图: 其中包含一个班级的信息,和班级中的3个学生的信息。 对应的数据结构如下: BMclass.h: @interface BMClass : Jastor @property (strong,nonatomic) NSString* name; @property (strong,nonatomic) NSString* grade; @property (strong,nonatomic) NSArray* students; +(id)students_class; @end BMclass.m: @implementation BMClass @synthesize name,grade,students; +(id)students_class{ return [BMStudent class]; } @end BMStudent.h: @interface BMStudent : Jastor @property (strong,nonatomic) NSString* name; @property (strong,nonatomic) NSString* sex; @property (nonatomic) int age; @end BMStudent.m: @implementation BMStudent @synthesize name,age,sex; @end 具体的解析代码如下: 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代码如下: public class BMClass { public String name; public String grade; public List<BMStudent> students; } BMStudent.class代码如下: public class BMStudent { public String name; public String sex; public int age; } Object类型的json字符串转换为对象解析的过程代码如下: Gson gson = new Gson(); Type classType = new TypeToken<BMClass>() {}.getType(); BMClass c = gson.fromJson(jsonStr, classType); 解析的结果如下(Debug截图):
List类型的json字符串转换为对象解析的地方只更换Type的类型即可,例如: Type classType = new TypeToken<List<BMClass>>() {}.getType(); 文章结束。
|
请发表评论