Swift - 检查JSON是否有效

时间:2015-08-31 21:09:36

标签: json swift

@JoinTable(
    name = "TSJoin",
    joinColumns = {
            @JoinColumn(name = "tsjoin_id", nullable = false, referencedColumnName = "tsjoin_id")
    },
    inverseJoinColumns = {
            @JoinColumn(name = "e_id", nullable = false)
    }
)

当jsonData的内容实际上是有效的JSON时,我希望上面的代码只设置let data = NSData(contentsOfFile: "myfile") let jsonString = NSString(data: data, encoding: NSUTF8StringEncoding) let jsonData: NSData! = jsonString.dataUsingEncoding(NSUTF8StringEncoding)! var validJson = false if (NSJSONSerialization.JSONObjectWithData(jsonData, options: nil, error: &error) != nil) { validJson = true } 为true。如果我把任何东西输入" myfile"可以在代码中看到的文件,validJson 始终为真。

如何解决此问题,validJson只有在实际有效的JSON时才会生效?

2 个答案:

答案 0 :(得分:14)

isValidJSONObject:

返回一个布尔值,指示是否可以将给定对象转换为JSON数据。

代码示例

    let jsonString = "{}"
    let jsonData = jsonString.data(using: String.Encoding.utf8)

    if JSONSerialization.isValidJSONObject(jsonData) {
        print("Valid Json")
    } else {
        print("InValid Json")
    }

API REFERENCE:

答案 1 :(得分:2)

我测试了以下内容:

let jsonString = ""

let jsonString = "<html></html>"

let jsonString = "{}"

代码:

let jsonData: NSData = jsonString.dataUsingEncoding(NSUTF8StringEncoding)!
var error: NSError? = nil

let validJson = (NSJSONSerialization.JSONObjectWithData(jsonData, options:nil, error: &error) != nil)

println("Valid JSON: \(validJson)")

前两个字符串打印false,第三个字符串按预期打印true

我认为你可能正在加载一个与你预期不同的文件。