5
サイトにJSONデータを送信しようとするとエラーが発生します。しかし、サイトをチェックすると、jsonのすべてのデータが送信され、正しいことがわかります。JSON投稿時のエラーJSON
私が手にエラーがある:
Error: Error Domain=NSCocoaErrorDomain Code=3840 "JSON text did not start with array or object and option to allow fragments not set." UserInfo={NSDebugDescription=JSON text did not start with array or object and option to allow fragments not set.}
私が持っているコードは次のとおりです。
let json = [
"name": "john",
"last name": "smith"
]
do{
let jsonData = try NSJSONSerialization.dataWithJSONObject(json, options: .PrettyPrinted)
let url = NSURL(string: website)
let request = NSMutableURLRequest(URL: url!)
request.HTTPMethod = "POST"
request.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type")
request.HTTPBody = jsonData
let task = NSURLSession.sharedSession().dataTaskWithRequest(request){ data, response, error in
if error != nil{
print("Error: \(error)")
return
}
do {
let result = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as? [String:AnyObject]
print("Result: \(result)")
} catch {
print("Error: \(error)")
}
}
task.resume()
} catch {
print(error)
}
私は断片を可能にする場合:
try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.AllowFragments)
私は別のエラーが表示されます。
Error: Error Domain=NSCocoaErrorDomain Code=3840 "Invalid value around character 0." UserInfo={NSDebugDescription=Invalid value around character 0.}
私が変更されていない:
try NSJSONSerialization.JSONObjectWithData(jsonData, options: NSJSONReadingOptions.AllowFragments)
に
try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.AllowFragments)
をし、私はもはやエラーが発生します。
私は別のエラーが発生した場合: – dozo
私の経験では、この問題は、サーバーからの応答がJSONオブジェクトまたは配列でない場合に発生します。応答を配列で囲むようにしてください。 –
これはサーバー上で実行する必要があります。データの生成方法(PHP、.NET、JS、...)は分かりませんが、 '[]'や '{}'を追加する必要があります。 –