Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone can';t将postString发送到json_Iphone_Objective C_Json - Fatal编程技术网

Iphone can';t将postString发送到json

Iphone can';t将postString发送到json,iphone,objective-c,json,Iphone,Objective C,Json,我使用json框架发送jsonstring。我的json post字符串是 { "firstName": "string1", "lastName": "string2", "contactSource": "Leter", "permanentAddress": {}, "deliveryAddress": {}, "preferredContactTimes": [] } 我的编码 NSString *postString = [NSStri

我使用json框架发送jsonstring。我的json post字符串是

{
    "firstName": "string1",
    "lastName": "string2",
    "contactSource": "Leter",
    "permanentAddress": {},
    "deliveryAddress": {},
    "preferredContactTimes": []
}
我的编码

NSString *postString = [NSString stringWithFormat:@"[\"firstName\":\"barani\",\"lastName\":\"Tharn\",\"contactSource\":\"Leter\",\"permanentAddress\":{},\"deliveryAddress\":{},\"preferredContactTimes\":[]]",fName.text,lName.text,contactSource.text,address,address,add];

NSURL *purchaseURL = [NSURL URLWithString:@"http://localhost/Cali/addContact"];
NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:purchaseURL];

NSData *requestData = [NSData dataWithBytes:[postString UTF8String] length:[postString length]];

[request setHTTPMethod:@"POST"];
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setValue:[NSString stringWithFormat:@"%d", [requestData length]] forHTTPHeaderField:@"Content-Length"];
[request setHTTPBody:requestData];//[postString dataUsingEncoding:NSUTF8StringEncoding]];
NSLog(@"post String :%@",[[NSString alloc] initWithData:requestData encoding:NSASCIIStringEncoding]);
NSURLConnection *purchaseConn =[[NSURLConnection alloc]
                                initWithRequest:request
                                delegate:self];

if (purchaseConn) {
    NSLog(@"connection!!!");
    webData = [[NSMutableData data] retain];
}
关于这件事,我确实完成了装货

NSString *jsonString = [[NSString alloc] initWithData:webData encoding:NSUTF8StringEncoding];
NSLog(@"hai:%@",[[NSString alloc] initWithData:webData encoding:NSASCIIStringEncoding]);

NSDictionary *jsonValue = [jsonString JSONString];
NSLog(@"output:%@",jsonValue);
这里的
permanentAddress
deliveryAddress
也是一个子json字符串和一个preferredContactTimes数组

我得到了json失败的错误

JSONValue失败。错误跟踪是:( “Error Domain=org.brautaset.JSON.ErrorDomain Code=11\“字符串意外结束\”UserInfo=0x4c8d820{NSLocalizedDescription=字符串意外结束}” )


请给我解决方案

不确定这是否导致您的问题,但这是可能的,特别是如果您的姓名和其他文本字段包含非ASCII字符。您创建的NSData如下所示:

NSData *requestData = [NSData dataWithBytes:[postString UTF8String] length:[postString length]];
[postString UTFString]将把字符串转换成以零结尾的字节缓冲区。如果该字符串中有任何非ASCII字符,则该缓冲区的长度将大于字符数。因此,如果字符串中的字符数为10,那么字节数将至少为11(nil终止符为一个字节),并且可能更长

然后告诉NSData缓冲区的长度等于字符串的长度。所以,若[postString UTF8String]的结果更长,那个么您可能会得到一个被截断的缓冲区,并将其用于解析

尝试这样做:

NSData *requestData = [postString dataUsingEncoding:NSUTF8StringEncoding]

多亏了我找到了问题发生的地方。。。。我和web服务开发人员讨论过。他说我发送的格式是正确的。但在服务器端,它会自动创建垃圾值,因为它们会创建映射。所以他们为我创建了一个新的,现在工作很好


谢谢

json的格式是正确的。您应该确保正确使用您选择的json框架。如果您真的需要支持,请提供更多详细信息。