0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

備忘録Advent Calendar 2023

Day 7

JSON ファイルについての備忘録

Posted at

はじめに

JSON ファイルについてのの備忘録です💁
初心者です😅
間違えてる部分多々あると思います。
もし見つけた場合、ツッコミいただけると助かります🙇

今回、AWSを構築した際に、jsonに対しての知識不足を感じたのでまとめました。

🦁 結論 🦁

押さえておくべき点

  • JSONは、軽量なデータ交換フォーマット。人間にも読みやすく、機械にも解析しやすい構造
  • 多くのプログラミング言語で容易に扱えるため、ウェブアプリケーションでのデータ交換に広く使用されてる
  • JSONはテキストベースで、JavaScript以外の言語でも簡単に読み書きできる
  • JSONは、名前と値のペア(オブジェクト)、または値の順序付きリスト(配列)で構成

タイミング

  • クライアントとサーバー間でデータを送受信する際によく使用する
  • ウェブアプリケーションの設定情報を保存する時に使う
  • モバイルアプリがサーバーと通信する際、JSONは軽量で効率的なデータフォーマットとしてよく利用される
  • ログファイル、異なるシステム間、フロントエンドとバックエンドのデータ通信などでよく利用する

注意点

  • JSONはUTF-8エンコーディングを使用することが推奨
  • JSONは数値、文字列、ブーリアン、配列、オブジェクト、nullをサポートされてるが、日付や複雑なデータ型は直接サポートしてない
  • 大規模なJSONデータの解析や生成は、パフォーマンスに影響を与える可能性がある

サーバーとのやり取りの例

サーバーへJanコードデータでリクエストを送信
サーバーから「商品名」「価格」をレスポンスで返してくれる
この流れをまとめてます。
(AWSのlambdaで作成)

データをJSONに置き換える

json.dumps(jan_code)

この関数はPythonの辞書をJSON形式の文字列に変換。
ここでは、jan_code という辞書をJSON形式の文字列に変換

sample.py
import json

# 商品名と価格の辞書データ
jan_code = {
    "jan_code": 1234567891234,
}

# 辞書データをJSON文字列に変換
jan_code_json = json.dumps(jan_code)

置き換えたデータを元にリクエストする

requests.post(api_url, json=jan_code_json)

requests.post は、指定されたURL(api_url)に対してPOSTリクエストを送信するためのメソッド。

sample.py
api_url = 'https://example.com/api'
response = requests.post(api_url, json=jan_code_json)

受け取るレスポンスを定義する(JSONを解析する)

response.json()

このメソッドはサーバーから受け取ったレスポンスをJSON形式で解析し、Pythonの辞書に変換。

sample.py
if response.status_code == 200:
    response_data = response.json()

受け取ったJSONファイルデータを変換する

json.loads(output_dict)

json.loads 関数はJSON形式の文字列をPythonの辞書に変換。

sample.py
    if response_data.get('status') == 'SUCCEEDED':
        output_dict = response_data.get('output')
        output_data = json.loads(output_dict)
        body_dict = output_data.get('body')

        lambda_product_name = body_dict.get('lambda_product_name')
        lambda_price = body_dict.get('lambda_price')

        # 辞書に追加
        goods_status_details = {}  # 既存の辞書または新しい辞書
        goods_status_details[jan_code["jan_code"]] = (lambda_product_name, lambda_price)

        print(f"処理成功: {lambda_product_name}, {lambda_price}")
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?