我在iOS应用上有一个接受NSString值的输入字段。我希望能够将输入验证为JSON对象。例如:
NSString = @"{'foo':'bar'}" //would be validated as JSON notation
NSString = @"Hello world!" //would NOT be validated as JSON
我尝试使用以下方法:
[NSJSONSerialization isValidJSONObject:(id)obj]
但是,它总是返回false,即使字符串输入类似于{' hello':' world'}。我在这里做错了什么或遗失了吗?
答案 0 :(得分:1)
isValidJSONObject
不是查看字符串是否表示有效JSON的方法。这意味着要查看NSArray
或NSDictionary
是否可以转换为JSON字符串。
要查看您的JSON字符串是否是有效的JSON,请使用正常的JSON序列化(JSONObjectWithData:options:error:
)并查看是否获得了有效的结果。
NSString *jsonString = ... // the JSON you wish to validate
NSError *error = nil;
id result = [NSJSONSerialization JSONObjectWithData:[jsonString dataUsingEncoding:NSUTF8Encoding] options:0 error:&error];
if (result) {
// string was valid JSON
} else {
// string was not valid JSON
// log error to see what was wrong
}
答案 1 :(得分:0)
isValidJSONObject测试是否可以将NSDictionary或NSArray转换为JSON对象。它不测试JSON字符串是否正确。
检查的方法是
if ([NSJSONSerialization JSONObjectWithData:[yourString dataUsingEncoding:NSUTF8Encoding] options:0 error:nil]) {
//valid
}