1

この問題の解決策をオンラインで検索しましたが、常に返される結果はnullです。

これは私がウェブから受け取った次の文字列です。すべてが正常に機能しているようです。ただし、この文字列を配列に変換すると、返される結果はnullになります。

コード:

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
NSLog(@"connectionDidFinishLoading");
NSLog(@"Succeeded! Received %d bytes of data",[self.responseData length]);

// String
NSString *responseString = [[NSString alloc] initWithData:self.responseData encoding:NSUTF8StringEncoding];
NSLog(@"%@", responseString);

NSDictionary *resultsDictionary = [responseString objectFromJSONString];
NSLog(@"%@", resultsDictionary); // Returns null

}

結果:[{"cid": "382595836"、 "name": "\ u514d \ u7a0e \ u5e97 \ u4e13 \ u5356 \ u54c1"}、{"cid": "382595837"、 "name": "\ u9650 \ u91cf \ u7248 \ u9999 \ u6c34 "}、{" cid ":" 380837083 "、" name ":" \ u5973 \ u58eb \ u7cbe \ u88c5 "}、{" cid ":" 380837082 "、" name ":" \ u7537 \ u58eb \ u7cbe \ u88c5 "}、{" cid ":" 61540749 "、" name ":" \ u7b80 \ u88c5 \ u5973 \ u7528 \ u9999 \ u6c34 "}、{" cid ":" 24213689 "、" name ":" \ u7b80 \ u88c5 \ u7537 \ u7528 \ u9999 \ u6c34 "}、{" cid ":" 25541561 "、" name ":" Q \ u9999 \ u5973 \ u58eb "}、{" cid ":" 25541841 " 、"name": "Q \ u9999 \ u7537 \ u58eb"}]

誰かが私にこれについて考える方法を提供してくれますように。

ありがとう。

4

3 に答える 3

1

これを試して

NSMutableData *responseData; // .h クラスで使用

この関数を .m クラスで使用する

-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    NSLog(@"connection did receive data");
    [responseData appendData:data];
    NSString *responseString = [NSString stringWithUTF8String:[responseData bytes]];
    NSLog(@"%@",responseString);
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    NSLog(@"Succeeded! Received %d bytes of data", [responseData length]);
}
于 2012-11-30T06:57:14.390 に答える
0

以下のコードを使用します。コードは ios 5.0 以降で動作します。

NSArray* list = [NSJSONSerialization JSONObjectWithData:self.responseData options:kNilOptions
                          error:&error];

これは私がしました。それは私にとってはうまくいっています。以下のロジックを試してみてください。

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"demo" ofType:@"json"];
NSData *myData = [NSData dataWithContentsOfFile:filePath];
NSError *error;
id json = [NSJSONSerialization JSONObjectWithData:myData options:kNilOptions error:&error];
NSArray *list = (NSArray *)json;
于 2012-11-30T06:48:11.000 に答える
-1

渡した文字列が有効な JSON でない場合は、objectFromJSONStringが返さnilれます。

これをチェックしました

[{"cid":"382595836","name":"\u514d\u7a0e\u5e97\u4e13\u5356\u54c1"},{"cid":"382595837","name":"\u9650\u91cf\u7248\u9999\u6c34"},{"cid":"380837083","name":"\u5973\u58eb\u7cbe\u88c5"},{"cid":"380837082","name":"\u7537\u58eb\u7cbe\u88c5"},{"cid":"61540749","name":"\u7b80\u88c5\u5973\u7528\u9999\u6c34"},{"cid":"24213689","name":"\u7b80\u88c5\u7537\u7528\u9999\u6c34"},{"cid":"25541561","name":"Q\u9999\u5973\u58eb"},{"cid":"25541841","name":"Q\u9999\u7537\u58eb"}] 2012-11-30 14:29:52.779 com.JSON.Product[1979:c07]

JSONLintでは、無効な JSONであることを示しています。

于 2012-11-30T06:51:44.130 に答える