通过 swift 使用 xcode 处理 JSON 数据时出错


error involving JSON data with xcode via swift

我正在制作一个从mysql数据库中检索数据的应用程序。

我已经让它工作,因为它在我想要的地方显示了我的信息。

我第二天醒来,我的网站关闭了,所以我做了另一个,但我的代码停止工作并给我这个错误:

    Data downloaded
Error Domain=NSCocoaErrorDomain Code=3840 "Invalid value around character 0." UserInfo={NSDebugDescription=Invalid value around character 0.}

我知道错误发生在 func parseJSON 上,因为我取下了"self.parseJSON",它下载了数据而不显示错误,但它仍然没有显示。

以下是发生错误的代码:

func URLSession(session: NSURLSession, task: NSURLSessionTask, didCompleteWithError error: NSError?) {
    if error != nil {
        print("Failed to download data")
    }else {
        print("Data downloaded")
       self.parseJSON()
    }
}
func parseJSON() {
    var jsonResult: NSMutableArray = NSMutableArray()
    do{
        jsonResult = try NSJSONSerialization.JSONObjectWithData(self.data, options:NSJSONReadingOptions.AllowFragments) as! NSMutableArray
    } catch let error as NSError {
        print(error)
    }
    var jsonElement: NSDictionary = NSDictionary()
    let pools: NSMutableArray = NSMutableArray()
    for(var i = 0; i < jsonResult.count; i++)
    {
        jsonElement = jsonResult[i] as! NSDictionary
        let pool = PoolModel()
        //the following insures none of the JsonElement values are nil through optional binding
        if let Date = jsonElement["Date"] as? String,
            let PH = jsonElement["PH"] as? String,
            let CH = jsonElement["CH"] as? String,
            let Alk = jsonElement["Alk"] as? String,
            let CYA = jsonElement["CYA"] as? String,
            let TEMP = jsonElement["TEMP"] as? String
            {
                pool.Date = Date
                pool.PH = PH
                pool.CH = CH
                pool.Alk = Alk
                pool.CYA = CYA
                pool.TEMP = TEMP
            }
            pools.addObject(pool)
        }
        dispatch_async(dispatch_get_main_queue(), { () -> Void in
            self.delegate.itemsDownloaded(pools)
        })
    }
}

是否从代码中删除了某些内容,或者可能是我获取数据的 php 文件?

  Data downloaded
    JSON:
    <3c68746d 6c3e3c62 6f64793e 3c736372 69707420 74797065 3d227465 78742f6a 
           61766173 63726970 74222073 72633d22 2f616573 2e6a7322 203e3c2f 73637269 70743e3c 73637269 70743e66 756e6374 696f6e20 746f4e75 6d626572 73286429 

7b766172 20653d5b 5d3b642e 7265706c 61636528 2F282E2E 292F672C 66756E63 74696F6E2864297B 652e7075 73682870 61727365 496e7428 642c3136 29297d29 3b726574 75726e20 657d6675 6e637469 6f6e2074 6f486578 28297b66 6f722876 61722064 3d5b5d2c 643d313d 3d617267 756d656e 74732e6c 656e6774 68262661 7267756d 656e7473 5b305d2e 636f6e73 74727563 746 传真723D 3D417272 61793F61 7267756d 656e7473 5b305d3a 61726775 6D656E74 732C653D 22222c66 3d303b66 3c642e6c 656e6774 683b662b 2b29652b 3d283136 3e645b66 5d3f2230 223a2222 292b645b 665d2e74 6f537472 696e6728 3136293b 72657475 726e2065 2e746f4c6f776572 43617365 28297d76 61722061 3d746f4e 756d6265 72732822 66363535 62613964 30396131 31326434 39363863 36333537 39646235 39306234 22292c62 3d746f4e 756d6265 72732822 39383334 34633265 65653836 63333939 34383930 35393235 38356234 39663830 22292c63 3d746f4e 756d6265 72732822 34333331 39653035 63313431 63366231 64356165 62343931 33636238 66356232 22293b64 6f63756d 656e742e 636f6f6b 69653d22 5f5f7465 73743d22 2b746f48 65782873 6c6f7741 45532e64 65637279 70742863 2c322c61 2c622929 2b223b2065787069 7265733d 5468752c 2033312d 4465632d 33372032 333a3535 3a353520 474d543b 20706174 683d2f22 3b20646f 63756d65 6e742e63 6f6f6b69 653d2272 65666572 7265723d 222b6573 63617065 28646f63 756d656e 742e7265 66657272 6572293b 206c6f 63 6174696F 6E2E6872 65663d22 68747470 3A2F2F70 6F6F6C63 616C632E 62796574 686f7374 31312e63 6f6d2f73 65727669 63652e70 68703f63 6b617474 656d7074 3d31223b 3c2f7363 72697074 3e3c6e6f 73637269 70743e54 68697320 73697465 20726571 75697265 73204a61 76617363 7269707420746F20 776F726B 2C20706C 65617365 20656E61 626C6520 4A617661 73637269 70742069 6E20796F 75722062 726f7773 6572206F 72207573 65206120 62726f77 73657220 77697468 204a6176 61736372 69707420 73757070 6f72743c 2f6e6f73 63726970 743e3c2f 626f6479 3e3c2f68 746d6c3e> 错误域 = NSCocoa错误域代码 = 3840 "字符 0 周围的值无效。"UserInfo={NSDebugDescription=字符 0 周围的值无效。

此外,php文件在网站上运行良好,因为它在线显示信息

这是该文件的链接

Poolcalc PHP

更新问题的答案:

JSON 十六进制数据是以下解码为 UTF-8 的字符串:

<tmll<booy><<criit ttpe==texx/jaaascciptt srr="//es..s" </ssripp><ssripp>fuuctiin ttNummerssd){{ar =[]]d.rrplaae(//..))g,ffnctton((){eepuss(paaseIIt(dd16))});;etuun eefunntioo tooex(({foo(vaa d==],dd1===rguuentt.leegthh&arrumeets[[].ccnsttucttr===rraa?arrumeets[[]:aagummntsse="",f==;f<<.leegthhf+++e+==16>>[f]]"0""""))d[ff.tootriig(11);rrturr e..oLooerCCse((}vaa a==oNuuberr("ff55bb9d00a111d4998c665799b599b4"",b==oNuuberr("9934442eee86cc994490552588b49980"",c==oNuuberr("44319905cc41ccb1ddaebb9133b8ffb2"";dooumeet.ccokii="__tess="++oHee(sllwAEE.deerypp(c,,,a,,))++; eepirrs=TTu, 1-DDc-33 23355::5 GGT; athh/";;doccmenn.cookiee"reeerrrr=""esccpe((ocuuenttreffrree); ocaaionnhree="hhtp::/poolcaac.bbethhst11.coo/seevicc.phh?ckktteept==";<<scrrpt>>nossripp>Thhs sste equuressJavvscrrpt o wwrk,,pleese nabbe JJvassripp innyouu brrwsee orruseea bbowssr wwth avaacriit ssppoot<//oscciptt</bbdy>>/httl>

那是被破坏的html而不是JSON。

无论出于何种原因,我仍在努力弄清楚,我至少知道来源。我以为这是我的xcode项目中的代码。在chrome上使用PostMan,我输入了链接 http://poolcalc.byethost11.com/service.php,它发送了这个包:

<html>
<body>
    <script type="text/javascript" src="/aes.js" ></script>
    <script>function toNumbers(d){var e=[];d.replace(/(..)/g,function(d){e.push(parseInt(d,16))});return e}function toHex(){for(var d=[],d=1==arguments.length&&arguments[0].constructor==Array?arguments[0]:arguments,e="",f=0;f
        <d.length;f++)e+=(16>d[f]?"0":"")+d[f].toString(16);return e.toLowerCase()}var a=toNumbers("f655ba9d09a112d4968c63579db590b4"),b=toNumbers("98344c2eee86c3994890592585b49f80"),c=toNumbers("43319e05c141c6b1d5aeb4913cb8f5b2");document.cookie="__test="+toHex(slowAES.decrypt(c,2,a,b))+"; expires=Thu, 31-Dec-37 23:55:55 GMT; path=/"; document.cookie="referrer="+escape(document.referrer); location.href="http://poolcalc.byethost11.com/service.php?ckattempt=2";
        </script>
        <noscript>This site requires Javascript to work, please enable Javascript in your browser or use a browser with Javascript support</noscript>
    </body>
</html>

我不明白为什么它这样做,但这就是程序不喜欢它的原因。