簡體   English   中英

SWIFT 3如何從我的本地主機Web服務連接Json

[英]SWIFT 3 How to connect Json from my localhost web service

我想從本地主機連接數據,但出現錯誤“ json錯誤:由於格式不正確,無法讀取數據”。

這是代碼。

 let session = URLSession.shared
 var dataTask:URLSessionDataTask!   
 var webDomain = "http://192.xxx.xx.xx:80xx/WebServiceTest.asmx"
 var url:URL!
 var arrTable = [[String:AnyObject]]()
 func getTableDataFromWeb(){
      strURL = webDomain + "/SearchNonMemberByRangeLatitude=25.062047&Longitude=121.495241&Range=300"
 url = URL(string: strURL)
 let request = URLRequest(url: URL(string: strURL)!)
 let loginTask = URLSession.shared.dataTask(with: request,  completionHandler: { (data, response, error) in guard 
let data = data, let _ = response , error == nil else {
                                print("error")
                                return
                            }
                            do{
                                let arrayJSON = try JSONSerialization.jsonObject(with: data,options: .allowFragments)as! Dictionary<String, AnyObject>
                                self.arrTable = [arrayJSON]
                                print(self.arrTable)
                            }catch let error as NSError     {   print("json error: \(error.localizedDescription)")  }
            DispatchQueue.main.async(execute: {
            self.tableView.reloadData()
            })
            })
    print("Web:\(strURL)")
    loginTask.resume()
        }

這是傑森數據

<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://192.xxx.xx.xx:8081/WebServiceTest.asmx">[
[
        {
            "NonCID": "n10909",
            "Name": "xxx",
            "ClassType": "xxx",
            "City": "xxx",
            "Area": "xxx",
            "Address": "xxx",
            "TelArea": "xx",
            "Tel": "2xxxxx56",
            "Latitude": 2x.x047,
            "Longitude": 1xx.495241
        },

    ]</string>

我也嘗試XMlParse是可行的,但是得到這樣的數據

Getting tag:string
Tag detail:["["]
Tag detail:["\n  {"]
Tag detail:["\n    \"NonCID\": \"n10909\","]
Tag detail:["\n    \"Name\": \""]
Tag detail:["1111\",\n    \"ClassType\": \"2222\",\n    \"City\": \"111\",\n    \"Area\": \"111\",\n    \"Address\": \"11111\",\n    \"TelArea\": \"02\",\n    \"Tel\": \"29857456\",\n    \"Latitude\": xx.062047,\n    \"Longitude\": 1xx.495241\n  },\n  {\n    \"NonCID\": \"n10957\",\n    \"Name\": \"xxx"]
Tag detail:["\",\n    \"ClassType\": \"xx\",\n    \"City\": \"xxx\",\n    \"Area\": \"xxx\",\n    \"Address\": \"xxxxx\",\n    \"TelArea\": \"02\"  }\n]"]

這是代碼

var tagName = String()
var tagContent = String()        
func getTableDataFromWeb()
            {
              strURL = webDomain + "/SearchNonMemberByRange?Latitude=2x.&Longitude=1xx.4x241&Range=300"
                url = URL(string: strURL)!
                dataTask = session.dataTask(with: url) { (xmldata, response, error)
                    -> Void in
                    if xmldata == nil {
                        print("dataTaskWithRequest error: \(error)")
                        return
                    }
                     let xmlParser = XMLParser(data: xmldata!)
                    xmlParser.delegate = self
                    xmlParser.parse()
                    print("Web:\(strURL)")
                    dataTask.resume()
                    }
        }
    func parser(_ parser: XMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String])
        {
            if elementName == "NonCID"{
                tagName = elementName}
            print("Getting Tag:\(elementName)")
        }
        func parser(_ parser: XMLParser, foundCharacters string: String)
        {
            tagContent = string
            arr = [tagContent]
            print("Tag Detail:\(arr)")
        }
        func parserDidEndDocument(_ parser: XMLParser)
        {
            DispatchQueue.main.async { () -> Void in
                self.tableView.reloadData()
            }
        }

誰能告訴我應該使用Json data plz做什么,謝謝。

您的數據是XML。 碰巧的是,XML文件中XML元素之一的文本值為JSON。 因此,您需要XML解析代碼來提取JSON文本。 然后,您需要對提取的JSON使用JSONSerialization

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM