[英]iOS Swift How to pass JSON String and Array or Dictionary to Javascript from UIWebView?
在我的项目中,我使用stringByEvaluatingJavaScript将字符串传递给 JavaScript,它已成功传递。 但是如果我传递了 JSON String 和 Array 或 Dictionary 意味着它不会传递我不知道如何传递这些值的值。
在这里我提到了我尝试将字符串传递给 JavaScript 的代码,
let param:String = "HI"
let _ = self.webView.stringByEvaluatingJavaScript(from: "myNewFunction('\(param)')")
它成功返回值HI
这里我提到了 JavaScript 代码,
<!DOCTYPE html>
<html>
<p>Click the button to display an alert box.</p>
<script>
function myNewFunction(param) {
alert(param);
}
</script>
<body>
<button onclick="myNewFunction()">Try it</button>
</body>
</html>
如何传递数组和字典以及 JSON 字符串等值?
let dict:[String:Any] = ["key1":10,"key2":false, "key3": "Some string goes in here"]
let jsonData = try? JSONSerialization.data(withJSONObject: dict, options: [.prettyPrinted])
if let data = jsonData{
let value = String(data: data, encoding: .utf8)
print( value )
}
输出: Optional("{\\n \\"key1\\" : 10,\\n \\"key2\\" : false,\\n \\"key3\\" : \\"这里有一些字符串\\"\\n}")
这里缺少的是字典类型推断,即 dict:[String:Any]。 此外,当您使用 try 时,请与它一起使用 optional ,因为它可能会抛出像 try?
这可能有效..我还没有测试过:
if let data = try? JSONSerialization.data(withJSONObject: arrayOrDictionaryHere, options: [.prettyPrinted]), let param = String(data: data, encoding: .utf8) {
self.webView.stringByEvaluatingJavaScript(from: "myNewFunction('\(param)')")
}
//JS:
function myNewFunction(param) {
alert(JSON.parse(param))
}
使用以下代码将字典转换为 jsonstring:
var dict : Dictionary = ["key1":"value1","key2":"value2"]
let data = try JSONSerialization.data(withJSONObject: dict, options: [.prettyPrinted])
let value = String(data: data, encoding: .utf8)
然后使用value
的字符串调用您的 javascript 方法
如果您将第二行中的dict
替换为 json 数组的实例,那么您也将获得 json 数组的 json 字符串。 我的每一件事也将为此工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.