私はFalconフレームワークを使用するPython 3.4で書かれたWebサービスを持っています。 1つの特定のメソッドは、json値のポストを受け入れます。私のコード:Python json.loads()がjson文字列の解析に失敗しました
try:
raw_json = req.stream.read()
except Exception as ex:
raise falcon.HTTPError(falcon.HTTP_400, 'Error', ex.message)
try:
result_json = json.loads(raw_json.decode('utf-8'))
except ValueError:
raise falcon.HTTPError(falcon.HTTP_400,
'Malformed JSON', 'Could not decode the request body. The JSON was incorrect.')
clientIp = result_json['c']
wpIp = result_json['w']
lan = result_json['l']
table = int(result_json['t'])
このコードは、9ヶ月前に細かい作業が、現在はエラーがスローされました:「リストのインデックスが整数またはスライスではなく、STRでなければなりません。」私はPythonやFalconパッケージのアップデート後に破損している可能性が高いと思います。
raw_json.decode( 'utf-8')の出力は、[{"" w ":" 10.191.0.2 "、" c ":" 10.191.0.3 "、" l ":" 255.255。 255.0」、「t」:「4」}]である。私はjson.loads()が私の問題の根源だと思う。 len(result_json)が期待していた場所に1を返しています。4. json.loads()が正しく解析するために必要な追加パラメータがありますか?あるいは、私は何か完全に欠けていますか?
おかげで、 グレッグ(Pythonのnoobの)
トリックをしました。ありがとう。私はそれが何か単純だと思った。 –
場合によっては複数の結果があることもありますので、 'result_json'を繰り返し、' dict'のそれぞれから 'c 'の値を取得することができます。インデックス0でインデックスするだけであれば、おそらく重要なデータを見逃したかどうかはわかりません。 – ShadowRanger
良い点ですが、着信要求も制御していますが、単なる単品であることがわかります。 –