havenondemand 1.0.7

havenondemand 1.0.7

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最后发布2017年1月
SwiftSwift 版本3.0
SPM支持 SPM

Phong Vu 维护。



Haven OnDemand 的 iOS-Swift 客户端库

官方客户端库,帮助调用 Haven OnDemand API http://havenondemand.com.

库包含 2 个包

  • HODClient 包,用于向 Haven OnDemand API 发送 HTTP GET/POST 请求。
  • HODResponseParser 包,用于解析 Haven OnDemand API 的 JSON 响应。

库需要 Swift 3.0。

什么是 Haven OnDemand?

Haven OnDemand 是一套超过 60 个 API,用于处理各种非结构化数据。以下只是我们的一些 API 功能

  • 语音转文本
  • OCR
  • 文本提取
  • 索引文档
  • 智能搜索
  • 语言识别
  • 概念提取
  • 情感分析
  • 网络爬虫
  • 机器学习

要查看所有 API 的完整列表并尝试它们,请查看 https://www.havenondemand.com/developer/apis

将 HODClient 直接集成到 iOS Swift 项目中

  1. 下载 HODClient iOS 库。
  2. 创建一个新的或打开一个现有的 iOS Swift 项目
  3. 将 HODClient.swift 文件添加到项目。>
  4. 浏览到库所在文件夹,并选择 HODClient.swift 文件。
  5. 如果您想使用 HODResponseParser 库,按照第 4 步添加 HODResponseParser.swift 和 HODResponseObjects 文件。


HODClient API 参考

构造器

创建并初始化 HODClient 对象。

HODClient(apiKey:String, version:String = "v1")

参数

  • apiKey 您的开发者 API 密钥。
  • version Haven OnDemand API 版本。目前它仅支持版本 1。因此,默认值是“v1”。

示例代码

var hodClient:HODClient = HODClient(apiKey: "your-api-key")

GetRequest 函数

发送 HTTP GET 请求以调用 Haven OnDemand API。

GetRequest(inout params:Dictionary<String, AnyObject>, hodApp:String, async:Bool)

参数

  • params 一个包含要发送到 Haven OnDemand API 的键/值对参数的字典对象,其中键是该 API 的参数。
  • hodApp 是一个字符串,用于标识 Haven OnDemand API。例如:“extractentities”。当前支持的应用程序列表在 HODApps 对象中。
  • async 指定 API 调用是异步还是同步。对于异步调用,默认值为 true。

响应

  • 如果 async 是 true,将通过 requestCompletedWithJobID(response:String) 回调函数返回响应。
  • 如果 async 是 false,将通过 requestCompletedWithContent(response:String) 回调函数返回响应。
  • 如果发生错误,将通过 onErrorOccurred(errorMessage:String) 回调函数发送错误消息。

示例代码

// Call the Entity Extraction API to find people and places from CNN website

var hodApp = hodClient.hodApps.ENTITY_EXTRACTION;
var entities = ["people_eng","places_eng"]
var params = Dictionary<String, AnyObject>()
params["url"] = "http://www.cnn.com"
params["entity_type"] = entities
hodClient.GetRequest(&params, hodApp:hodApp, async:false)

函数 PostRequest

向 Haven OnDemand API 发送 HTTP POST 请求。

PostRequest(inout params:Dictionary<String, Object>, hodApp:String, async:Bool)

参数

  • params 一个包含要发送到 Haven OnDemand API 的键/值对参数的字典对象,其中键是该 API 的参数。
  • hodApp 是一个字符串,用于标识 Haven OnDemand API。例如:“ocrdocument”。当前支持的应用程序列表在 HODApps 对象中。
  • async 指定 API 调用是异步还是同步。对于异步调用,默认值为 true。

响应

  • 如果 async 是 true,将通过 requestCompletedWithJobID(response:String) 回调函数返回响应。
  • 如果 async 是 false,将通过 requestCompletedWithContent(response:String) 回调函数返回响应。
  • 如果发生错误,将通过 onErrorOccurred(errorMessage:String) 回调函数发送错误消息。

示例代码

// Call the OCR Document API to scan text from an image file

var hodApp = hodClient.hodApps.OCR_DOCUMENT
var params =  Dictionary<String,Object>()
params["file"] = "full/path/filename.jpg"
params["mode"] = "document_photo"
hodClient.PostRequest(&params, hodApp:hodApp, async:true)

函数 GetRequestCombination

向组合 API 发送 HTTP GET 请求。

GetRequestCombination(inout params:Dictionary<String,AnyObject>, hodApp:String), async:Bool = true)

参数

  • params 是一个包含要发送到 Haven OnDemand 组合 API 的键/值对参数的 Dictionary 对象,其中键是该 API 的参数。
  • hodApp 是一个字符串,用于标识 Haven OnDemand 组合 API。
  • async 指定 API 调用是异步还是同步。对于异步调用,默认值为 true。

示例代码

// Call a combination API named "ocrtoconcept", which recognizes text from an image and extract the concept of the text.
params["url"] =  "http://www.some.domain/review.jpg" as AnyObject
hodClient.GetRequestCombination(&params, hodApp:"ocrtoconcept", async: false);

函数 PostRequestCombination

向组合 API 发送 HTTP POST 请求。

PostRequestCombination(inout params:Dictionary<String,AnyObject>, hodApp:String, async:Bool = true)

参数

  • params 是一个包含要发送到 Haven OnDemand 组合 API 的键/值对参数的 Dictionary 对象,其中键是该 API 的参数。
  • hodApp 是一个字符串,用于标识 Haven OnDemand 组合 API。
  • async 指定 API 调用是异步还是同步。对于异步调用,默认值为 true。

响应

  • 如果 async 是 true,将通过 requestCompletedWithJobID(response:String) 回调函数返回响应。
  • 如果 async 是 false,将通过 requestCompletedWithContent(response:String) 回调函数返回响应。
  • 如果发生错误,将通过 onErrorOccurred(errorMessage:String) 回调函数发送错误消息。

示例代码

// Call a combination API named "imagetosentiment", which recognizes text from an image and analyze the sentiment of the text.

var file = Dictionary<String,String>()
file["imageFile"] = "fullpath/image.jpg"
let files:NSMutableArray = []
files.add(file)
var params = Dictionary<String,AnyObject>()
params["file"] = files as AnyObject
hodClient.PostRequestCombination(&params, hodApp: "imagetosentiment")

函数 GetJobResult

向 Haven OnDemand 发送请求以检索由 jobID 标识的内容。

GetJobResult(jobID:String)

参数

  • jobID 是在异步调用 Haven OnDemand API 时返回的工作 ID。

响应

  • 响应将通过 requestCompletedWithContent(response:String) 返回。

函数 GetJobStatus

向 Haven OnDemand 发送请求以检索由 job ID 标识的工作的状态。如果作业已完成,则响应将是该作业的结果。否则,响应将包含作业的当前状态。

GetJobStatus(jobID:String)

参数

  • jobID 是在异步调用 Haven OnDemand API 时返回的工作 ID。

响应

  • 响应将通过 requestCompletedWithContent(response:String) 返回。

回调函数

在您的类中,您需要继承 HODClientDelegate 协议并实现委托函数以从服务器接收响应

class MyAppClass : HODClientDelegate {

    hodClient.delegate = self

    func requestCompletedWithJobID(_ response:String){ }

    func requestCompletedWithContent(_ response:String){ }

    func onErrorOccurred(_ errorMessage:String){ }
}

当您以 ASYNC 模式调用 GetRequest() 或 PostRequest() 时,响应将返回到此回调函数。响应是一个包含 jobID 的 JSON 字符串。

func requestCompletedWithJobID(_ response:String)
{

}

当您以 SYNC 模式调用 GetRequest() 或 PostRequest() 或调用 GetJobResult() 函数时,响应将返回到此回调函数。响应是一个包含服务实际结果的 JSON 字符串。

func requestCompletedWithContent(_ response:String)
{

}

如果发生错误,错误消息将返回到此回调函数。

func onErrorOccurred(_ errorMessage:String)
{

}

HODResponseParser API 参考

构造函数

创建并初始化一个 HODResponseParser 对象。

HODResponseParser()

示例代码

var hodParser:HODResponseParser = HODResponseParser()

函数 ParseJobID

从一个异步 API 调用返回的 JSON 字符串中解析 jobID。

ParseJobID(jsonStr:String) -> String?

参数

  • jsonStr 是一个异步 API 调用返回的 JSON 字符串。

返回值

  • jobID 或未找到时为 nil。

示例代码

func requestCompletedWithJobID(_ response:String) {
    let jobID : String? = hodParser.ParseJobID(response)
    if jobID != nil {
        hodClient.GetJobStatus(jobID!)
    }
}

函数 ParseSpeechRecognitionResponse

解析 Haven OnDemand 语音识别 API 的 JSON 响应,并返回一个 SpeechRegconitionResponse 对象。

ParseSpeechRecognitionResponse(jsonStr) -> SpeechRecognitionResponse?

注意:请参阅本文件末尾的“标准解析函数”部分的完整标准解析函数列表。

参数

  • jsonStr 是从同步 API 调用或 GetJobResult() 或 GetJobStatus() 函数返回的 JSON 字符串。

返回值

  • 包含 API 响应值的对象。如果出现错误或作业未完成(GetJobStatus 调用的回调),则返回的对象为 nil,可以通过调用 GetLastError() 函数访问错误或作业状态。

示例代码

func requestCompletedWithContent(_ response:String) {
    if let resp = (hodParser.ParseSentimentAnalysisResponse(response)) {
        var result = "Positive:\n"
        for item in resp.positive {
            let i  = item as! SentimentAnalysisResponse.Entity
            result += "Sentiment: " + i.sentiment + "\n"
            result += "Score: " + String(format:"%.6f",i.score) + "\n"
            result += "Topic: " + i.topic + "\n"
            result += "Statement: " + i.original_text + "\n"
            result += "Length: " + String(format:"%d",i.original_length) + "\n"
            result += "------\n"
        }
        result += "Negative:\n"
        for item in resp.negative {
            let i  = item as! SentimentAnalysisResponse.Entity
            result += "Sentiment: " + i.sentiment + "\n"
            result += "Score: " + String(format:"%.6f",i.score) + "\n"
            result += "Topic: " + i.topic + "\n"
            result += "Statement: " + i.original_text + "\n"
            result += "Length: " + String(format:"%d",i.original_length) + "\n"
            result += "------\n"
        }
        result += "Aggregate:\n"
        result += "Sentiment: " + resp.aggregate.sentiment + "\n"
        result += "Score: " + String(format:"%.6f",resp.aggregate.score)
        // print or consume result
    } else {
        let errors = hodParser.GetLastError()
        var errorStr = ""
        for error in errors {
            let err = error as! HODErrorObject
            errorMsg =  String(format: "Error code: %d\n", err.error)
            errorMsg += String(format: "Error reason: %@\n", err.reason)
            errorMsg += String(format: "Error detail: %@\n", err.detail)
            errorMsg += String(format: "JobID: %@\n", err.jobID)
            print(errorMsg)
            if err.error == HODErrorCode.QUEUED { // queues
                // sleep for a few seconds then check the job status again
                hodClient.GetJobStatus(err.jobID)
                break
            } else if err.error == HODErrorCode.IN_PROGRESS { // in progress
                // sleep for for a while then check the job status again
                hodClient.GetJobStatus(err.jobID)
                break
            }
        }
    }
}

函数 ParseCustomResponse

解析 JSON 字符串,并将结果作为 NSDictionary 对象返回。您需要定义一个自定义类,并将结果解析到该类中。以下是更多详细信息的示例。

ParseCustomResponse(jsonStr: String) -> NSDictionary?

参数

  • jsonStr 是从同步 API 调用或 GetJobResult() 或 GetJobStatus() 函数返回的 JSON 字符串。

返回值

  • 包含 API 结果值的 NSDictionary 对象。如果出现错误或作业未完成(GetJobStatus 调用的回调),则返回的对象为 nil,可以通过调用 GetLastError() 函数访问错误或作业状态。

示例代码

// Define a custom class to hold entity extraction API's response
public class EntityExtractionResponse:NSObject {
    var entities:NSMutableArray = [];
    init(json : NSDictionary) {
        super.init()
        for (key, value) in json {
            let keyName:String = (key as? String)!
            if let _ = value as? NSArray {
                let keyValue:NSArray = (value as? NSArray)!
                if keyName == "entities" {
                    for item in keyValue {
                        let p = Entity(json: item as! NSDictionary)
                        self.entities.addObject(p)
                    }
                }
            }
        }
    }
    public class AdditionalInformation:NSObject {
        var person_profession:NSMutableArray = []
        var person_date_of_birth:String = ""
        var wikidata_id:Int = 0
        var wikipedia_eng:String = ""
        var image:String = ""
        var person_date_of_death:String = ""
        var lon:Double = 0.0
        var lat:Double = 0.0
        var place_population:Int = 0
        var place_country_code:String = ""
        var place_region1:String = ""
        var place_region2:String = ""
        var place_elevation:Double = 0.0
        init(json:NSDictionary) {
            super.init()
            for (key, value) in json {
                let keyName:String = (key as? String)!
                if let _ = value as? NSArray {
                    let keyValue:NSArray = (value as? NSArray)!
                    for item in keyValue {
                        if (self.respondsToSelector(NSSelectorFromString(keyName))) {
                            let c = item as! String
                            self.person_profession.addObject(c)
                        }
                    }
                } else {
                    if (self.respondsToSelector(NSSelectorFromString(keyName))) {
                        self.setValue(value, forKey: keyName)
                    }
                }
            }
        }
    }
    public class Components:NSObject {
        var original_length: Int64 = 0
        var original_text: String = ""
        var type: String = ""
        init(json:NSDictionary) {
            super.init()
            for (key, value) in json {
                let keyName:String = (key as? String)!
                if (self.respondsToSelector(NSSelectorFromString(keyName))) {
                    self.setValue(value, forKey: keyName)
                }
            }
        }
    }
    public class Entity:NSObject {
        var normalized_text:String = ""
        var original_text:String = ""
        var type:String = ""
        var normalized_length:Int = 0
        var original_length:Int = 0
        var score:Double = 0.0
        var additional_information:AdditionalInformation?
        var components:NSMutableArray = []
        init(json: NSDictionary) {
            super.init()
            for (key, value) in json {
                let keyName:String = (key as? String)!
                if let _ = value as? NSDictionary {
                    let keyValue:NSDictionary = (value as? NSDictionary)!
                    if (self.respondsToSelector(NSSelectorFromString(keyName))) {
                        self.additional_information = AdditionalInformation(json:keyValue)
                    }
                } else if let _ = value as? NSArray {
                    let keyValue:NSArray = (value as? NSArray)!
                    for item in keyValue {
                        if (self.respondsToSelector(NSSelectorFromString(keyName))) {
                            let c = Components(json:item as! NSDictionary)
                            self.components.addObject(c)
                        }
                    }
                } else {
                    if (self.respondsToSelector(NSSelectorFromString(keyName))) {
                        self.setValue(value, forKey: keyName)
                    }
                }
            }
        }
    }
}
// parse json string to a custom data object
func requestCompletedWithContent(_ response:String) {
    if let dic = hodParser.ParseCustomResponse(jsonData) {
        let obj = EntityExtractionResponse(json:dic)
        var result: String = ""
        for ent in obj.entities as NSArray as! [EntityExtractionResponse.Entity] {
            result += ent.normalized_text + "\n"
            result += ent.type + "\n"
            // access any other fields
        }
        // print or consume result
    } else {
        let errors = hodParser.GetLastError()
        var errorMsg = ""
        for error in errors {
            let err = error as! HODErrorObject
            errorMsg =  String(format: "Error code: %d\n", err.error)
            errorMsg += String(format: "Error reason: %@\n", err.reason)
            errorMsg += String(format: "Error detail: %@\n", err.detail)
            errorMsg += String(format: "JobID: %@\n", err.jobID)
            print(errorMsg)
            if err.error == HODErrorCode.QUEUED { // queues
                // sleep for a few seconds then check the job status again
                hodClient.GetJobStatus(err.jobID)
                break
            } else if err.error == HODErrorCode.IN_PROGRESS { // in progress
                // sleep for for a while then check the job status again
                hodClient.GetJobStatus(err.jobID)
                break
            }
        }
    }
}

函数 GetLastError

获取在解析 JSON 字符串或从 HOD 服务器返回的 HOD 错误过程中发生的最新错误(如有)。

GetLastError() -> NSMutableArray

注意:作业处于“排队”或“进行中”状态也被视为错误情况。以下示例说明了如何检测和处理错误状态。

返回值

  • 一个包含 HODErrorObject 的 NSMutableArray。

示例代码

let errors = hodParser.GetLastError()
var errorMsg = ""
for error in errors {
    let err = error as! HODErrorObject
    errorMsg =  String(format: "Error code: %d\n", err.error)
    errorMsg += String(format: "Error reason: %@\n", err.reason)
    errorMsg += String(format: "Error detail: %@\n", err.detail)
    errorMsg += String(format: "JobID: %@\n", err.jobID)
    print(errorMsg)
    if err.error == HODErrorCode.QUEUED { // queues
        // sleep for a few seconds then check the job status again
        hodClient.GetJobStatus(err.jobID)
        break
    } else if err.error == HODErrorCode.IN_PROGRESS { // in progress
        // sleep for for a while then check the job status again
        hodClient.GetJobStatus(err.jobID)
        break
    }
}

示例代码 1

使用实体抽取 API 通过同步 GET 请求从 cnn.com 网站提取人物和地点

class MyAppClass : HODClientDelegate {
    var hodClient:HODClient = HODClient(apiKey: "your-api-key")
    hodClient.delegate = self
    var hodParser:HODResponseParser = HODResponseParser()
    var hodApp = ""

    func useHODClient() {
        var hodApp = hodClient.hodApps.ENTITY_EXTRACTION
        var params =  Dictionary<String,Object>()

        params["url"] = "http://www.cnn.com"
        params["entity_type"] = ["people_eng","places_eng"]
        params["unique_entities"] = "true"

        hodClient.GetRequest(&params, hodApp:hodApp, async:false);
    }

    // implement delegated functions
    func requestCompletedWithContent(_ response:String){
        if let obj = (hodParser.ParseEntityExtractionResponse(response)) {
            var people = ""
            var places = ""
            for ent in obj.entities as NSArray as! [EntityExtractionResponse.Entity] {
                if ent.type == "people_eng" {
                    people += ent.normalized_text + "\n"
                    // parse any other interested information about this person ...
                }
                else if type == "places_eng" {
                    places += ent.normalized_text + "\n"
                    // parse any other interested information about this place ...
                }
            }            
        }else{
            checkErrorInResponse()
        }
    }
    func checkErrorInResponse() {
        let errors = hodParser.GetLastError()
        var errorStr = ""
        for error in errors {
            let err = error as! HODErrorObject
            errorStr = "Error code: " + String(format: "%d", err.error) + "\n"
            errorStr += "Error reason: " + err.reason + "\n"
            errorStr += "Error detail: " + err.detail + "\n"
            errorStr += "Error jobID: " + err.jobID + "\n"
        }
        println(errorStr)
    }

    func onErrorOccurred(errorMessage:String){
        // handle error if any
    }
}

示例代码 2

使用 OCR 文档 API 使用异步 POST 请求从图像中扫描文本

class MyAppClass : HODClientDelegate {
    var hodClient:HODClient = HODClient(apiKey: "your-api-key")
    var hodParser:HODResponseParser = HODResponseParser()
    hodClient.delegate = self

    func useHODClient() {
        var hodApp = hodClient.hodApps.OCR_DOCUMENT
        var params =  Dictionary<String,AnyObject>()
        params["file"] = "full/path/filename.jpg"
        params["mode"] = "document_photo"

        hodClient.PostRequest(&params, hodApp:hodApp)
        }

    // implement delegated functions
    /**************************************************************************************
    * An async request will result in a response with a jobID. We parse the response to get
    * the jobID and send a request for the actual content identified by the jobID.
    **************************************************************************************/
    func requestCompletedWithJobID(_ response:String){
        let jobID:String? = hodParser.ParseJobID(response)
        if jobID != nil {
            hodClient.GetJobStatus(jobID!)
        }
    }
    func requestCompletedWithContent(_ response:String){
        if let resp = (hodParser.ParseOCRDocumentResponse(response)) {
            var result = "Scanned text:\n"
            for item in resp.text_block {
                let i  = item as! OCRDocumentResponse.TextBlock
                result += "Text: " + i.text + "\n"
                result += "Top/Left: " + String(format: "%d/%d", i.top, i.left) + "\n"
                result += "------\n"
            }
            // print or consume result
        }else{
            let errors = hodParser.GetLastError()
            var errorMsg = ""
            for error in errors {
                let err = error as! HODErrorObject
                errorMsg =  String(format: "Error code: %d\n", err.error)
                errorMsg += String(format: "Error reason: %@\n", err.reason)
                errorMsg += String(format: "Error detail: %@\n", err.detail)
                errorMsg += String(format: "JobID: %@\n", err.jobID)
                print(errorMsg)
                if err.error == HODErrorCode.QUEUED { // queues
                    // sleep for a few seconds then check the job status again
                    hodClient.GetJobStatus(err.jobID)
                    break
                }else if err.error == HODErrorCode.IN_PROGRESS { // in progress
                    // sleep for for a while then check the job status again
                    hodClient.GetJobStatus(err.jobID)
                    break
                }
            }
        }
    }
    func onErrorOccurred(_ errorMessage:String){
        // handle error if any
    }
}

标准响应解析函数

ParseSpeechRecognitionResponse(_ jsonStr:String) -> SpeechRecognitionResponse?
ParseDetectSceneChangesResponse(_ jsonStr:String) -> DetectSceneChangesResponse?
ParseLicensePlateRecognitionResponse(_ jsonStr:String) -> LicensePlateRecognitionResponse?
ParseCancelConnectorScheduleResponse(_ jsonStr:String) -> CancelConnectorScheduleResponse?
ParseConnectorHistoryResponse(_ jsonStr:String) -> ConnectorHistoryResponse?
ParseConnectorStatusResponse(_ jsonStr:String) -> ConnectorStatusResponse?
ParseCreateConnectorResponse(_ jsonStr:String) -> CreateConnectorResponse?
ParseDeleteConnectorResponse(_ jsonStr:String) -> DeleteConnectorResponse?
ParseRetrieveConnectorConfigurationFileResponse(_ jsonStr:String) -> RetrieveConnectorConfigurationFileResponse?
ParseRetrieveConnectorConfigurationAttrResponse(_ jsonStr:String) -> RetrieveConnectorConfigurationAttrResponse?
ParseStartConnectorResponse(_ jsonStr:String) -> StartConnectorResponse?
ParseStopConnectorResponse(_ jsonStr:String) -> StopConnectorResponse?
ParseUpdateConnectorResponse(_ jsonStr:String) -> ConnectorResponse?
ParseExpandContainerResponse(_ jsonStr:String) -> ExpandContainerResponse?
ParseStoreObjectResponse(_ jsonStr:String) -> StoreObjectResponse?
ParseViewDocumentResponse(_ jsonStr:String) -> ViewDocumentResponse?
ParseGetCommonNeighborsResponse(_ jsonStr:String) -> GetCommonNeighborsResponse?
ParseGetNeighborsResponse(_ jsonStr:String) -> GetNeighborsResponse?
ParseGetNodesResponse(_ jsonStr:String) -> GetNodesResponse?
ParseGetShortestPathResponse(_ jsonStr:String) -> GetShortestPathResponse?
ParseGetSubgraphResponse(_ jsonStr:String) -> GetSubgraphResponse?
ParseSuggestLinksResponse(_ jsonStr:String) -> SuggestLinksResponse?
ParseSummarizeGraphResponse(_ jsonStr:String) -> SummarizeGraphResponse?
ParseOCRDocumentResponse(_ jsonStr:String) -> OCRDocumentResponse?
ParseRecognizeBarcodesResponse(_ jsonStr:String) -> RecognizeBarcodesResponse?
ParseRecognizeImagesResponse(_ jsonStr:String) -> RecognizeImagesResponse?
ParseDetectFacesResponse(_ jsonStr:String) -> DetectFacesResponse?
ParsePredictResponse(_ jsonStr:String) -> PredictResponse?
ParsePredictV2Response(_ jsonStr:String) -> PredictV2Response?
ParseRecommendResponse(_ jsonStr:String) -> RecommendResponse?
ParseRecommendV2Response(_ jsonStr:String) -> RecommendV2Response?
ParseTrainPredictionResponse(_ jsonStr:String) -> TrainPredictionResponse?
ParseTrainPredictionV2Response(_ jsonStr:String) -> TrainPredictionV2Response?
ParseCreateQueryProfileResponse(_ jsonStr:String) -> CreateQueryProfileResponse?
ParseDeleteQueryProfileResponse(_ jsonStr:String) -> DeleteQueryProfileResponse?
ParseRetrieveQueryProfileResponse(_ jsonStr:String) -> RetrieveQueryProfileResponse?
ParseUpdateQueryProfileResponse(_ jsonStr:String) -> UpdateQueryProfileResponse?
ParseFindRelatedConceptsResponse(_ jsonStr:String) -> FindRelatedConceptsResponse?
ParseAutoCompleteResponse(_ jsonStr:String) -> AutoCompleteResponse?
ParseExtractConceptsResponse(_ jsonStr:String) -> ExtractConceptsResponse?
ParseEntityExtractionResponse(_ jsonStr:String) -> EntityExtractionResponse?
ParseEntityExtractionV2Response(_ jsonStr:String) -> EntityExtractionV2Response?
ParseExpandTermsResponse(_ jsonStr:String) -> ExpandTermsResponse?
ParseHighlightTextResponse(_ jsonStr:String) -> HighlightTextResponse?
ParseIdentifyLanguageResponse(_ jsonStr:String) -> IdentifyLanguageResponse?
ParseTokenizeTextResponse(_ jsonStr:String) -> TokenizeTextResponse?
ParseSentimentAnalysisResponse(_ jsonStr:String) -> SentimentAnalysisResponse?
ParseSentimentAnalysisV2Response(_ jsonStr:String) -> SentimentAnalysisV2Response?
ParseAddToTextIndexResponse(_ jsonStr:String) -> AddToTextIndexResponse?
ParseCreateTextIndexResponse(_ jsonStr:String) -> CreateTextIndexResponse?
ParseDeleteTextIndexResponse(_ jsonStr:String) -> DeleteTextIndexResponse?
ParseDeleteFromTextIndexResponse(_ jsonStr:String) -> DeleteFromTextIndexResponse?
ParseIndexStatusResponse(_ jsonStr:String) -> IndexStatusResponse?
ParseListResourcesResponse(_ jsonStr:String) -> ListResourcesResponse?
ParseRestoreTextIndexResponse(_ jsonStr:String) -> RestoreTextIndexResponse?
ParseAnomalyDetectionResponse(_ jsonStr:String) -> AnomalyDetectionResponse?
ParseTrendAnalysisResponse(_ jsonStr:String) -> TrendAnalysisResponse?

许可

许可协议为 MIT 许可。