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

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

新規登録して質問してみよう
ただいま回答率
85.47%
AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Q&A

解決済

1回答

5322閲覧

python2.7:json内が\エスケープされている場合の処理方法

noz_awsinf_sp

総合スコア62

AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

0グッド

0クリップ

投稿2019/05/15 10:28

pythonで、jsonを処理するコードを書いているのですが、処理対象のjsonが以下のように一部が\エスケープされている場合、json.dumpsで処理する際に\エスケープを解除した状態でdumpすることは可能でしょうか。

import json import logging import time event ={ "Records": [ { "EventSource": "aws:sns", "EventVersion": "1.0", "Sns": { "Message": "{ \"version\":\"0\", \"id\":\"a8498092-7de7-7a11-990c-146e0013daf9\" }", "MessageAttributes": "aaa" } } ] } logger = logging.getLogger() logger.setLevel(logging.INFO) logging.Formatter.converter = time.localtime logger.info("Event: " + json.dumps(event, ensure_ascii=False, indent=4))

logger出力結果

[INFO] 2019-05-15T19:16:12.598Z a2e41fb2-a5a6-464b-b9ab-ec5809119320 Event: { "Records": [ { "EventSource": "aws:sns", "EventVersion": "1.0" "Sns": { "Message": "{\"version\":\"0\",\"id\":\"a8498092-7de7-7a11-990c-146e0013daf9\"}, "MessageAttributes": {} } } ] }

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

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

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

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

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

y_waiwai

2019/05/15 10:35

どういう出力をさせたいんでしょうか
otn

2019/05/15 15:02

> \エスケープを解除した状態でdumpする とは、具体的にどういう意味ですか? \によるエスケープに「解除」という概念は無いのですが、「デコード」ですかね?あるいは「削除」?
guest

回答1

0

ベストアンサー

event["Records"][0]["Sns"]["Message"] の値の文字列 "{ \"version\":\"0\", \"id\":\"a8498092-7de7-7a11-990c-146e0013daf9\" }" をさらにデコードしたいという意味だと解釈しました。

その値だけをデコードするという形でよければ、下記のように出力する手が考えられます。

python

1message = json.loads(event["Records"][0]["Sns"]["Message"]) 2logger.info("Message: " + json.dumps(message, ensure_ascii=False, indent=4))

下記のように、event変数自体をいじってしまう方法でもよいのでしょうが、もとの構造が壊れるので、個人的には好きではないです。

python

1event["Records"][0]["Sns"]["Message"] = json.loads(event["Records"][0]["Sns"]["Message"]) 2logger.info("Event: " + json.dumps(event, ensure_ascii=False, indent=4))

投稿2019/05/15 11:39

iwamot

総合スコア1154

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問