快速将 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的主要内容,如果未能解决你的问题,请参考以下文章

js 将json字符串转换为json对象的方法解析

JS解析json数据(如何将json字符串转化为数组)

浅析 eval 解析json

JS解析json数据(如何将json字符串转化为数组)

怎样把JSON对象快速的转成java对象

尝试使用 swiftyJSON 快速解析 JSON