1

我的任务涉及在从 Web 服务获得响应之前为 JSON 字符串创建正确的设计。JSON 字符串必须如下所示:

{"nid":"","vocab":"", "inturl":"testoverview", "mail":"", "md5pw":""}

我的 JSON 字符串如下所示:

"nid:",
"vocab:",
"inturl:testoverview",
"mail:",
"md5pw:"

如您所见,它的构建方式不同,我没有使用大括号,也没有以正确的方式分隔字符串。我不知道该怎么做。

我的代码在这里:

NSString *nid = @"nid:";
NSString *vocab = @"vocab:";
NSString *inturl = @"inturl:testoverview";
NSString *mail = @"mail:";
NSString *md5pw = @"md5pw:";

NSArray *jsonArray = [NSArray arrayWithObjects:nid, vocab, inturl, mail, md5pw, nil];
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:jsonArray options:NSJSONWritingPrettyPrinted error:&error];
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];


FSProductTestHandler *handler = [[FSProductTestHandler alloc] init];

if (!jsonData) {
    NSLog(@"Got an error; %@", error);
} else if(jsonData) {

    NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];

    NSString *url = @"http://www.taenk.dk/services/mobile";
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url] cachePolicy:NSURLCacheStorageAllowed timeoutInterval:30.0];

    [request setValue:jsonString forHTTPHeaderField:@"X-FBR-App"];
    [[NSURLConnection alloc] initWithRequest:request delegate:self];

}

谁能帮我解决这个问题?

4

1 回答 1

2

您正在为序列化提供一个数组,这意味着您将获得一个 JSON 数组作为输出,例如:

[ "foo", "bar", "baz"]

(注意括号[ ...]而不是大括号{ ... }

您需要构建一个 NSDictionary 并且对于您的特定示例,最快的方法是这样的:

NSDictionary* dictionary = [NSDictionary dictionaryWithObjectsAndKeys: 
                                @"", @"nid",
                                @"", @"vocab",
                                @"testoverview", @"inturl",
                                @"", @"md5pw", 
                                @"", @"mail",
                                nil];

把它喂进去NSJSONSerialization,你就会得到你想要的。

于 2012-04-18T09:39:43.473 回答