在iOS上验证输入为JSON表示法

时间:2015-05-08 14:27:28

标签: ios json validation

我在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'}。我在这里做错了什么或遗失了吗?

2 个答案:

答案 0 :(得分:1)

isValidJSONObject不是查看字符串是否表示有效JSON的方法。这意味着要查看NSArrayNSDictionary是否可以转换为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
}