【发布时间】:2012-09-16 16:13:37
【问题描述】:
我正在为 Android 和 iPhone 开发一个应用程序,但在 iPhone 上编组和解组时遇到问题。使用 Android 就很简单了,我使用的是 Jackson JSON 解析器,网上有很多教程让它很容易使用。
在 iPhone 上,我使用的是 SBJSON 解析器,但是网上似乎真的缺乏关于如何有效使用它的信息。
取下面一段 JSON
{
"data":{
"name":[
{
"fName":"John",
"lName":"Doe"
},
{
"fName":"Jane",
"lName":"Doe"
}
]
}
}
如果我使用 Java 并使用 Jackson JSON 解析器,这将很容易。我会设置一个类,如
public class Parse {
private Data data;
//获取设置数据类
然后在数据类中
public class Data {
private List<Name> name;
//get set name list
然后在名称类中
public class Name {
private String fName;
private String lName;
//get setters here
这样我就可以将数据拆分为一组对象,这样我就可以检索我需要的数据,如果需要,我可以从 Java 更新 JSON,然后将其再次写入一个新的 JSON 文件,既简单又方便,即
ObjectMapper mapper = new ObjectMapper();
Parse test = mapper.readValue(new File("/Users/adam/Documents/JSON/list.json"),
Parse.class);
System.out.println(test.getData().getName().get(0).getfName());
或者我可以设置它做
test.getData().getName().get(0).setfName("test");
我想知道的是如何使用 Xcode 使用 SBJSON 执行此操作。我知道如何解析数据并将其打印出来,但我希望能够将其打印到一组对象中,进行更改,然后使用 Jackson JSON 解析器再次将其写出。我所做的是
NSString *file = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"json"];
NSData *Data = [NSData dataWithContentsOfFile:file];
NSString *jsonString = [[NSString alloc] initWithData:Data encoding:NSUTF8StringEncoding];
NSDictionary *dictionary = [jsonString JSONValue];
NSArray *name = [dictionary valueForKeyPath:@"data.name"];
NSLog(@"%@", name);
这将获得名称数组,但我希望能够访问每个对象的名字和姓氏,然后在需要时更新它。然后再写出来。
谁能指出我正确的方向。是否可以用 SBJSON 做我对 Jackson JSON 做的同样的事情?
【问题讨论】:
-
重新标记,因为这不是 XCode 的问题。
标签: objective-c json