1

POSTリクエストの本文でjsonデータ部分を簡単に抽出する方法はありますか?たとえば、誰かがjsonデータを含むフォームの本文を使用してwww.example.com/postに投稿した場合、私のGAEサーバーは次のように呼び出してリクエストを受信します。

jsonstr = self.request.body

ただし、jsonstrを見ると、次のようになります。

str: \r\n----------------------------8cf1c255b3bd7f2\r\nContent-Disposition: form-data;
name="Actigraphy"\r\n Content-Type: application/octet-
stream\r\n\r\n{"Data":"AfgCIwHGAkAB4wFYAZkBKgHwAebQBaAD.....

{"Data":......セクションで始まる本体のjson部分を抽出する関数を呼び出せるようにしたいだけです。

これを行うために呼び出すことができる簡単な関数はありますか?

4

3 に答える 3

2

誤解があります。表示される文字列はjsonデータではなく、POST本文のように見えます。cgi.parse_multipartのようなもので本体を解析する必要があります。次に、aschmid00が答えたようにjsonを解析できます。ただし、本文ではなく、データのみを解析します。

ここでは、POST本文を解析するためにcgi.FieldStorageを使用する方法を示す実用的なコードを見つけることができます。この質問にもここで回答します。

于 2012-06-19T22:08:59.637 に答える
2

送信する前にブラウザ側でどのようにエンコードされたかによって異なりますが、通常は次のようなPOSTデータを取得します。

jsonstr = self.request.POST["Data"]

それが機能しない場合は、「データ」がクライアント側のPOSTデータにどのようにエンコードされたかについての情報を提供することをお勧めします。

于 2012-06-20T01:17:31.503 に答える
0

あなたが試すことができます:

import json
values = 'random stuff .... \r\n {"data":{"values":[1,2,3]}} more rnandom things'
json_value = json.loads(values[values.index('{'):values.rindex('}') + 1])
print json_value['data'] # {u'values': [1, 2, 3]}
print json_value['data']['values'] # [1, 2, 3]

しかし、これは危険であり、かなりの仮定が必要です。使用しているフレームワーク、ボトル、フラスコ、たくさんありPOST ます。実際に使用している場合は、フレームワークに基づいて、適切な呼び出しを使用して値を取得してください。 。

self.request.get("Data")GAEを単独で使用している場合は、これを行うつもりだと思います。

https://developers.google.com/appengine/docs/python/tools/webapp/requestclass#Request_get https://developers.google.com/appengine/docs/python/tools/webapp/requestclass#Request_get_all

于 2012-06-19T22:15:48.370 に答える