我正在编写一个iOS应用程序(我的第一个),并且还在从数据库中为事件设计提要。事件按主题划分为逻辑分组。我希望使用swiftyJSON的结束游戏成为一个包含节和节头的表。可能的JSON看起来像,但我愿意完全改变它:
{
"events":[
{"school events":
[
{"title":"event1school","start_date":"01/01/01"},
{"title":"eventschool2","start_date":01/02/01"}
]
},
{"town events":
[
{"title":"event1school","start_date":"01/01/01"},
{"title":"eventschool2","start_date":01/02/01"}
]
}
]
}
我想要完成的是提供一个字典,其中键是节标题,行是键下方的信息数组。我刚接触iOS并且已经从JSON提要创建了一个表,但还没有从头开始设计。
任何建议表示赞赏。
我离得更近了。
self.swiftyJsonVar = JSON(jJson)
for(key,object) in self.swiftyJsonVar["events"]{
print(key)
print(object)
}
打印
0
{
"SCHOOLS" : [
]
}
它也可以很好地循环但是我不知道如何获得键然后是......之后的值......我很接近......;)
答案 0 :(得分:0)
我已将JSON放在本地文件中,并按以下方式解析。 您可以按照相同的方式解析它。 我已经采用了一个演示模型对象来保存数据
Swift版本:
我的模型对象看起来像
导入UIKit
class ReceipeBO: NSObject {
var headerValue : NSString!
var arrEvents : NSArray!
init(headerValue:NSString, arrEvents:NSArray) {
self.headerValue = headerValue;
self.arrEvents = arrEvents;
}
}
因此,从模型对象中可以看到,我在headerValue
属性和arrEvents
以下是我从JSON响应中获取的方法
func getLocalJsonData()
{
let filePath = NSBundle.mainBundle().pathForResource("test", ofType: "json");
let data = NSData.init(contentsOfFile: filePath!);
var json : NSArray!
var jsonTemp : NSDictionary = NSDictionary()
do{
jsonTemp = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableLeaves) as! NSDictionary;
}catch{
}
print("jsonTemp \(jsonTemp)");
json = jsonTemp["events"] as! NSArray;
print("json \(json)");
let arrEvents = NSMutableArray();
for dictTemp in json
{
let key = dictTemp.allKeys.first as! String;
let arrValue = dictTemp[key] as! NSArray;
let receipe = ReceipeBO(headerValue: key, arrEvents: arrValue);
arrEvents.addObject(receipe);
}
print("evnts : \(arrEvents)");
}
现在来到Objective C版本:
我的模型对象看起来像
#import <Foundation/Foundation.h>
@interface ReceipeBO : NSObject
@property (nonatomic, strong) NSString *headerValue;
@property (nonatomic, strong) NSMutableArray *arrEvents;
@end
现在以上面说明的类似方式,JSON
提取功能如下
- (void)getLocalJsonData
{
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"json"];
NSData *jsonData = [[NSData alloc] initWithContentsOfFile:filePath];
NSDictionary *jsonTemp = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableLeaves error:nil];
NSArray *json = jsonTemp[@"events"];
NSMutableArray *arrEvents = [NSMutableArray array];
for (NSDictionary *dictTemp in json) {
ReceipeBO *receipe = [[ReceipeBO alloc] init];
NSString *key = [dictTemp.allKeys firstObject];
receipe.headerValue = key;
receipe.arrEvents = dictTemp[key];
[arrEvents addObject:receipe];
}
//Access or fetching part
for (ReceipeBO *objReceipe in arrEvents) {
NSLog(@"Section header : %@", objReceipe.headerValue);
for (NSDictionary *dictEvent in objReceipe.arrEvents) {
NSLog(@"Event title %@ : Event start date %@", dictEvent[@"title"], dictEvent[@"start_date"]);
}
}
}
输出
Section header : school events Event title event1school : Event start
date 01/01/01 Event title eventschool2 : Event start date 01/02/01
Section header : town events Event title event1school : Event start
date 01/01/01 Event title eventschool2 : Event start date 01/02/01
希望它有所帮助。
快乐的编码......