1

私はphp Webサービス用のiOS jsonクライアントに取り組んでいますが、何らかの理由で、サーバーからのかなり単純なjson応答の解析に問題があります。私は何をする必要がありますか?

編集 問題は解析ではないため、Web サービスに送信している jsonString である必要があります。

基本的にはこれを送信する必要があります

POST 値
app = mark
data = { "01,E1,AT333AT333,9053839719,2012-08-28 14:35:58,2012-08-28 14:35:58,43.154650,-79.3877390,1000,YS3DD55H812035739,1000000 3434" }

現在のコードは、両方の文字列に対して null を出力しています。

Web サービスへの呼び出しを処理するメソッドを次に示します。

- (IBAction)submitMessage
{
    NSString* apps =@"mark";
    NSString* data = @"01,E1,AT333AT333,9053839719,2012-08-28 14:35:58,2012-08-28 14:35:58,43.154650,-79.3877390,1000,YS3DD55H812035739,1000000,3434";
    NSDictionary* jsonDictionary=[NSDictionary dictionaryWithObject: data forKey:@"data"];
    NSString* jsonString = [jsonDictionary JSONRepresentation];
    self.outPut.text=jsonString;
    NSLog(@"Made it");
    NSURL *url = [NSURL URLWithString:@"http://secure.g4apps.com/g4webservices.php"];
    AFHTTPClient *httpClient=[[AFHTTPClient alloc] initWithBaseURL:url];
    NSDictionary *params =[NSDictionary dictionaryWithObjectsAndKeys:
                           apps,@"app",
                           jsonString,@"smpdata",nil];

    NSMutableURLRequest *request = [httpClient requestWithMethod:@"POST" path:@"g4webservices.php" parameters:params];

    AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request
        success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
            NSLog(@"Response: %@ %@", [JSON valueForKeyPath:@"Status"], [JSON valueForKeyPath:@"Data"]);
            self.outPut2.text = [NSString stringWithFormat:@"response: %@ %@",[JSON valueForKeyPath:@"Status"], [JSON valueForKeyPath:@"Data"]];    }
                        failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error,id JSON){
                                         NSLog(@"[Error]: %@", error);
    }
];

    [operation start];


}

json レスポンスの例を次に示します。

{

"Status":"11",
"Data":["AT333AT333,43.1547986,-79.3884892",
"BT343BT343,43.1547986,-79.3884892"]

}
4

2 に答える 2

2

iOS 5 以降には、JSON を解析するための API が組み込まれています。

詳細については、このチュートリアルを参照してください。

また、NSJSONSerialization docsを読むこともできます。

于 2012-08-29T20:15:47.953 に答える
0

問題は、送信していた JSON 文字列でした。このサービスは、受信した json 文字列にキーと値のペアを使用していなかったため、Objective-C でそれを再現する方法を理解できませんでした。

次のように変数を投稿します app="app_name" data={ "Some csv data" }

私がObjective Cで作成できたのは app="app_name" data={ "Data":{"Some csv data"} } でした

そこで、iOS が生成したものを処理するようにサーバーを変更し、すべてが機能するようになりました。Data 配列に複数の値がある場合の応答の処理方法を理解してください。

于 2012-08-30T06:10:34.653 に答える