解析JSON数据
问题描述:
我从服务器JSON解析数据中的iPhone应用程序在跟随它的使用需要任意搜索文本字段,并张贴然后服务器文字和returs数据 匹配下面是我的iphone代码解析JSON数据
NSString*searchText=searchTextField.text;
NSString *post =[[NSString alloc] initWithFormat:@"searchCode=%@",searchText];
NSURL *url=[NSURL URLWithString:@"http://www.celeritas-solutions.com/pah_brd_v1/productivo/searchCatalog.php?"];
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init] ;
[request setURL:url];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];
NSError *error;
NSURLResponse *response;
NSData *urlData=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSString *data=[[NSString alloc]initWithData:urlData encoding:NSUTF8StringEncoding];
NSData* myData=[data dataUsingEncoding:NSUTF8StringEncoding];
NSString *json_string = [[NSString alloc] initWithData:myData encoding:NSUTF8StringEncoding];
NSArray *dataArr=[json_string JSONValue];
for (int i=0; i<[dataArr count]; i++) {
if (!dataArr || !dataArr.count){
if(resultArray!=nil){
resultArray=nil;
resultArray=[[NSMutableArray alloc]init];
}
}
NSDictionary *dict=[dataArr objectAtIndex:i];
ObjectData *theObject =[[ObjectData alloc] init];
[theObject setCategory:[dict objectForKey:@"category"]];
[theObject setSub_Category:[dict objectForKey:@"sub_Category"]];
[theObject setContent_Type:[dict objectForKey:@"content_Type"]];
[theObject setContent_Title:[dict objectForKey:@"content_Title"]];
[theObject setPublisher:[dict objectForKey:@"publisher"]];
[theObject setContent_Description:[dict objectForKey:@"content_Description"]];
[theObject setContent_ID:[dict objectForKey:@"content_ID"]];
[theObject setContent_Source:[dict objectForKey:@"content_Source"]];
[resultArray addObject:theObject];
[theObject release];
theObject=nil;
NSLog(@"%@", json_string);
这里是JSON字符串的结果
ProductivoApp[2087:c203] -JSONValue failed. Error trace is: (
"Error Domain=org.brautaset.JSON.ErrorDomain Code=3 \"Unrecognised leading character\" UserInfo=0x57b5a10 {NSLocalizedDescription=Unrecognised leading character}
我对URL
PHP代码 $flu=$_POST['searchCode'];
$query =mysql_query("SELECT * From catalog_Master WHERE category_Title LIKE '%$flu%'");
$rows = array();
while($row = mysql_fetch_assoc($query)) {
$rows[] = $row;
}
答
根据您的最新评论,原因是您的查询失败。
首先,你不应该使用mysql_*
函数。看到大红色框here。考虑使用PDO或MySQLi代替。其次,看起来你可能会打开SQL injection。你应该是escaping your queries。
第三,您应该对您的查询执行错误检查。类似的东西:
if(!$query) {
die('Query failed. ' . mysql_error()');
}
这应该给你一个想法,为什么查询失败。
你还没有发布你的代码mysql_connect(),你也应该错误检查这一点。类似于:
$link = mysql_connect('localhost', 'user', 'pass');
if(!$link) {
// Handle it
}
你是否检查过浏览器中的服务URL是否正确返回响应数据? – Ganapathy 2013-03-25 08:42:15
为什么你有一个“?”在你的URL结尾处,在POST中你不需要它。希望这有助于 – jAmi 2013-03-25 08:47:38
@Ganapathy它显示 警告:mysql_fetch_assoc():提供的参数不是在/home/content/i/h/u/ihus235/html/cs/pah_brd_v1/productivo/searchCatalog.php中的有效MySQL结果资源在线68 [] – 2013-03-25 08:49:59