質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

0回答

562閲覧

iOSからAPIを使ってPOSTをしたいがJSONのロジックが噛み合わない

GenkiMatsushima

総合スコア24

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2018/09/18 10:55

編集2018/09/19 17:09

SwiftとPythonでAPIサーバを作ってiOSからGET,POSTなどをしたいと思っています。ほぼ初心者です。

swift

1 @IBAction func actionCreate(_ sender: Any) { 2 Session.send(CreateBusinessTermRequest(id: titleTextField.text, name: contentTextField.text)) { result in 3 switch result { 4 case .success( _): 5 print("作成完了!") 6 case .failure(let err): 7 print("エラーが出ました。") 8 print(err) 9 } 10 } 11 }

swift

1struct CreateBusinessTermRequest: WebRequest { 2 3 var path: String { 4 return "/" 5 } 6 typealias Response = BusinessTerm 7 8 var method: HTTPMethod { 9 return .post 10 } 11 12 var id: String? 13 var name: String? 14 15 var bodyParameters: BodyParameters? { 16 return JSONBodyParameters(JSONObject: [ 17 "id": id, 18 "name": name 19 ]) 20 } 21 22 func response(from object: Any, urlResponse: HTTPURLResponse) throws -> CreateBusinessTermRequest.Response { 23 return try decodeValue(object) 24 } 25}

python

1class PostResource(object): 2 3 # postされた時の動作 4 def on_post(self, req, res): 5 6 body = req.stream.read() 7 data = json.loads(body) 8 9 # パラメーターの取得 10 name = data['name'] 11 id = data['id'] 12 13 connection = MySQLdb.connect( 14 host='localhost', 15 port=3306, 16 user='root', 17 passwd='password', 18 db='sample', 19 charset='utf8', 20 cursorclass=MySQLdb.cursors.DictCursor 21 ) 22 cursor = connection.cursor() 23 sql = "insert into business_term values(%d, '%s');"%(id, name) 24 25 cursor.execute(sql) 26 data = cursor.fetchall() 27 28 cursor.close() 29 connection.close() 30 31 res.status = falcon.HTTP_200 32 res.body = json.dumps(data) 33 print(res.body) 34

このようになっています。

Error

1responseError(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.})

このようになっています。

JSONに関するロジックが噛み合わないような気がしていますが、原因を明確に突き止められません。
何か間違いや意見がありましたらお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

t_obara

2018/09/18 13:27

問題がある場合、クライアントアプリの問題か、サーバ側の問題かを切り分けることが重要です。サーバ側が動作しているかどうかはcurlなどを利用したり、別のスクリプトで簡易的にAPIを叩いてみたりして確認することをお勧めします。クライアント側は固定的なJSON文字列など想定されるものを返却するだけにするなどで切り分けやすくすることをオススメいたします。ちなみに、サーバ側はjsonを返却していないですよね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問