快速将 HTML 字符串解析为 JSON
Posted
技术标签:
【中文标题】快速将 HTML 字符串解析为 JSON【英文标题】:Parse HTML string into JSON in swift 【发布时间】:2018-12-07 11:19:09 【问题描述】:我正在使用 javascript 来显示使用 html 到 WKWebView 的字符串
在我的视图控制器中调用 Javascript 函数
myWebView.evaluateJavaScript("customMessageWithDictionary('\(self.jsonString)','\(strTestType)')")
(id, error) in
print(error ?? "")
在 HTML 文件中
function customMessageWithDictionary(nameDetails,testType1)
nameDetails = nameDetails.replace(/\\/g, '');
questionList = $.parseJSON(nameDetails);
var iterator=0
for (iterator = 0; iterator < questionList.length; iterator++)
questionList[iterator].UserGivenAnswerId= null;
questionObj = questionList[positionObj];
testType=testType1;
loadQuestions(true);
如果 jsonString 中有 HTML 标签,那么获取错误并且我的 Javascript 不会运行。所以 WKWebview 没有显示内容。
如果 HTML 标记在我的 jsonString 中,请给我解决方案,因此请使用 HTML 字符串加载 javascript 函数。
【问题讨论】:
【参考方案1】: if let theJSONData = try? JSONSerialization.data( withJSONObject: self.aryOfQuestionList,options: .prettyPrinted ),
let theJSONText = String(data: theJSONData,encoding: String.Encoding.ascii)
print("JSON string = \n\(theJSONText)")
self.jsonString = (theJSONText as AnyObject) as! String
let regex = try! NSRegularExpression(pattern: "(?<=<\\w1,40)\\s[^>]+(?=>)", options: .caseInsensitive)
let range = NSMakeRange(0, self.jsonString.count)
let htmlWithoutInlineAttributes = regex.stringByReplacingMatches(in: self.jsonString, options: [], range: range, withTemplate: "")
print(htmlWithoutInlineAttributes)
【讨论】:
【参考方案2】:要检索应用程序资源的 URL,您应该使用 NSBundle 类的 URLForResource 方法。
斯威夫特 2
let url = NSBundle.mainBundle().URLForResource("privacy", withExtension:"html")
斯威夫特 3
let url = Bundle.main.url(forResource: "privacy", withExtension: "html")
【讨论】:
我的 HTML 文件已成功加载,但是当我使用 JSON 字符串调用 myWebView.evaluateJavaScript 方法时,如果字符串包含 HTML 标记,则会出现错误。 你检查过你的 HTML 标签了吗?是否正确打开和关闭?以上是关于快速将 HTML 字符串解析为 JSON的主要内容,如果未能解决你的问题,请参考以下文章