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 に答える