我试图在POST请求中发送一个json。
我创建了一个NSMutableDictionary并添加了Key Value对,我有一个NSMutableArray,它包含UIImage的二进制流。
所以当我将这个NSMutableArray添加到NSMutableDictionary并且我做了一个NSLog
结果是
{
key:value,
key:value1,
ArrayKey:(
iuhdgbdsnb325435435j435bu4h5h45hu34h545ih43h5i43hi5hu3i4h5u3
)
}
但我期望的JSON应该看起来像这样
{
key:value,
key:value1,
ArrayKey:[
iuhdgbdsnb325435435j435bu4h5h45hu34h545ih43h5i43hi5hu3i4h5u3
]
}
" [" "]"方括号是正确的格式,但我得到"("")"
我需要NSMutableArray这个" [" "]"然后只有我的服务器检测到这个json(序列化这个字典后)。
请帮助我的代码;
UIImage *yourImage= [UIImage imageNamed:@"test.jpg"];
NSData *imageData = UIImagePNGRepresentation(yourImage);
dict=[[NSMutableDictionary alloc]init];
arr1=[[NSMutableArray alloc]init];
[arr1 addObject:imageData];
[dict setObject:@"value" forKey:@"key"];
[dict setObject:@"value1" forKey:@"key1"];
[dict setObject:arr1 forKey:@"ArrayKey"];
请帮帮我
答案 0 :(得分:2)
打印字典不会在json中输出它,它只是巧合的json,你需要使用NSJSONSerialization
实用程序将它转换为json,here is how it would be used
答案 1 :(得分:0)
当您将对象的内容打印到NSLog
或调试器时,然后在后台调用description
方法。
试一试:
NSString aString = [dict description];
NSLog ("My string: %@", aString);
NSLog ("My dict: %@", dict);
两者看起来都一样。输出恰好提醒你一个JSON结构,但事实并非如此。为此使用JSON序列化框架。 NSJSONSerialization
现在已经存在了一段时间,可以节省使用。
答案 2 :(得分:0)
试试这个
NSError *error;
NSData * jsonData = [NSJSONSerialization dataWithJSONObject:dict options:kNilOptions error:&error];
NSString *dataString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
现在您的dataString将是JSON
格式
答案 3 :(得分:0)
您尚未序列化您的NSDictionary,这就是您继续看到()
而不是[]
的原因。
NSMutableDictionary *jsonDictionary = [NSMutableDictionary new];
NSMutableArray *array = [NSMutableArray new];
[array addObject:@"arrayData1"];
[array addObject:@"arrayData2"];
[array addObject:@"arrayData3"];
[jsonDictionary setObject:@"abhi" forKey:@"name"];
[jsonDictionary setObject:@"bangalore" forKey:@"city"];
[jsonDictionary setObject:array forKey:@"arrayKey"];
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:jsonDictionary
options:NSJSONWritingPrettyPrinted
error:nil];
NSLog(@"Dictionary in JSON Format: %@", [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]);
NSLog(@"Dictionary Output: %@", jsonDictionary);
来自控制台:
2015-05-27 13:40:15.344 For Abhi[2086:51652] Dictionary in JSON Format: {
"name" : "abhi",
"city" : "bangalore",
"arrayKey" : [
"arrayData1",
"arrayData2",
"arrayData3"
]
}
2015-05-27 13:40:15.345 For Abhi[2086:51652] Dictionary Output: {
arrayKey = (
arrayData1,
arrayData2,
arrayData3
);
city = bangalore;
name = abhi;
}
请注意,Dictionary输出有()
,其中JSON数据(从Dictionary序列化)有[]
。
答案 4 :(得分:0)
您说您的服务器需要这样的输出:
{
key:value,
key:value1,
ArrayKey:[
iuhdgbdsnb325435435j435bu4h5h45hu34h545ih43h5i43hi5hu3i4h5u3
]
}
那不是JSON。 iOS中没有任何东西可以产生这样的输出,服务器也不可能期望这种输出。
序列化为JSON的对象必须只包含:NSDictionary,NSArray,NSString,NSNumber和NSNull。没有NSData。您应首先询问服务器用户他们实际期望的内容。