2017-11-21 8 views
-2

下記のリクエストを実行するときに次のエラーが発生します。json NSCocoaErrorDomainコード= 3840でこの問題に直面していて、swift4でテキストが配列で始まっていないxcode 9.0.1

エラードメイン= NSCocoaErrorDomainコード= 3840「JSONテキストは、配列やオブジェクトおよびフラグメントが設定されていないことを可能にするオプションを 開始されませんでした。」 のUserInfo = {NSDebugDescription = JSONテキストはフラグメントが設定されていない可能にするために、配列または オブジェクトおよびオプションを指定して起動しませんでした。}

この問題を引き起こしている可能性が何
@IBAction func onPostTapped(_ sender: Any) { 

     let parameters = ["Name": "Yogesh", "Mobile": "1212121212", "DOB": "1122/12/12", "Address": "qwqwqwqw"] 
     //https://jsonplaceholder.typicode.com/posts 
     guard let url = URL(string: "http://localhost/webservice/Register.php") else { return } 
     var request = URLRequest(url: url) 
     request.httpMethod = "POST" 
     request.addValue("application/json", forHTTPHeaderField: "Content-Type") 
     guard let httpBody = try? JSONSerialization.data(withJSONObject: parameters, options: []) else { return } 
     request.httpBody = httpBody 

     let session = URLSession.shared 
     session.dataTask(with: request) { (data, response, error) in 
      if let response = response { 
       print(response) 
      } 

      if let data = data { 
       do { 
        let json = try JSONSerialization.jsonObject(with: data, options: []) 
        print(json) 
       } catch { 
        print(error) 
       } 
      } 

     }.resume() 

    } 

+0

エラーは 'JSONSerialization.jsonObject()'の 'catch'ですか? 'let dataStr = String(data:data、encoding:.utf8)'(印刷してください)を表示していますか?しかし、私は 'dataStr'はJSON Valid(オンラインのJSON Validatorがあります)をチェックしていないと思います。 – Larme

+2

> 200件の検索結果*「JSONテキストは配列やオブジェクトで始まらず、フラグメントが設定できないようにするオプション」*、どれも役に立たなかったのですか? –

答えて

1

このエラーは、受信したJSONがオブジェクトまたは配列で始まらず、[フラグメントを許可]が設定されていないという問題を説明しています。あなたのJSONをチェック

あなたが断片を許可する

あなたがそうのような断片を許可有効にすることができます。..

try JSONSerialization.jsonObject(with: data, options: .allowFragments) 

を受けるあなたに直接マッピングしていない部分JSONデータをロードすることを可能にすることを期待するものですドキュメントからの配列や辞書

を指定し、そのパーサべき ではないトップレベルのオブジェクトがNSArrayまたはNSDictionaryのインスタンスになります。

関連する問題