我正在尝试使用json序列化从对象创建字符串
输入我有
NSDictionary *sampledict = @{@"TextVal": @"10233"};
NSArray *arr = [NSArray arrayWithObject:sampledict];
需要输出
[{\"testval\":\"10233\"}]
我尝试了什么
NSDictionary *sampledict = @{@"TextVal": @"10233"};
NSArray *arr = [NSArray arrayWithObject:sampledict];
NSData *innerJson = [NSJSONSerialization dataWithJSONObject:arr options:0 error:NULL];
NSString *innerJsonString = [[NSString alloc] initWithData:innerJson encoding:NSUTF8StringEncoding];
NSLog(@"%@",innerJsonString);
// NSMutableDictionary *dict = [NSMutableDictionary dictionary];
// [dict setObject:innerJsonString forKey:@"sampleId"];
NSData *json = [NSJSONSerialization dataWithJSONObject:innerJsonString options:0 error:NULL];
NSString *jsonString = [[NSString alloc] initWithData:json encoding:NSUTF8StringEncoding];
NSLog(@"%@", jsonString);
它崩溃了
*由于未捕获的异常而终止应用程序
'NSInvalidArgumentException',原因:'* + [NSJSONSerialization
dataWithJSONObject:options:error:]:JSON中的无效顶级类型
写'
崩溃是因为它没有顶级字典,可以将其放入字典中。但是如何从该对象获取此json?
最佳答案
您在做错的是尝试从对象生成JSON字符串,而该对象又是一个字符串:
[dict setObject:innerJsonString forKey:@"sampleId"];
NSData *json = [NSJSONSerialization dataWithJSONObject:innerJsonString options:0 error:NULL]; //innerJsonString is a string that can't be serialized as JSON
更改为:
[dict setObject:arr forKey:@"sampleId"];
NSData *json = [NSJSONSerialization dataWithJSONObject:dict options:0 error:NULL];
它应该工作。
编辑
对于您的特定输出要求,可以使用:
NSDictionary *sampledict = @{@"TextVal": @"10233"};
NSArray *arr = [NSArray arrayWithObject:sampledict];
NSData *innerJson = [NSJSONSerialization dataWithJSONObject:arr options:0 error:NULL];
NSString *innerJsonString = [[NSString alloc] initWithData:innerJson encoding:NSUTF8StringEncoding];
NSLog(@"%@",innerJsonString);
但是我认为您已经从代码的第一部分中获取了所需的JSON,并且您已经自己解决了它:)
关于ios - 数组iOS的Json序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20034644/