@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时才会生效?
答案 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")
}
答案 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
。
我认为你可能正在加载一个与你预期不同的文件。