アプリ版:「スタンプのみでお礼する」機能のリリースについて

教えてください。プログラミング初心者です。
よくAPI連携でフロントエンドがバックエンドからjson形式のデータを取得するという説明がよく有りますが、json形式のデータ構造自体はサンプル等で分かるのですが、バックエンドがどのようにしてそのjson形式のデータを生成して、フロントエンドがデータをどのように取り込んでいるかイメージできるものがあれば教えていただけないでしょうか。図解があればいいのですが。

質問者からの補足コメント

  • 一点教えていただけないでしょうか?例えばres.jsonというライブラリがあった場合、サーバ側であらかじめstriingfy のようなメソッドによって自動的にkeyとvalueのセットでテキスト化されたものをただ包含して持ってきているだけなのでしょうか?なぜkeyというものが必要になるのでしょうか?それはデータベースの項目名みたいなものでしょうか?

    No.3の回答に寄せられた補足コメントです。 補足日時:2022/04/06 07:29

A 回答 (4件)

No3です。



補足を見ましたが、ご質問の内容がよくわかりません。

>サーバ側であらかじめstriingfy のようなメソッドによって自動的に
>keyとvalueのセットでテキスト化されたものをただ包含して
>持ってきているだけなのでしょうか?
少なくとも「自動的に」ではありません。
プログラムの作者が「意図的に」json化した内容を、「意図的に」送信しているはずです。
(プログラムなので、処理全体としては自動化されていますけれど・・)

>なぜkeyというものが必要になるのでしょうか?
jsonの構造上で必要になるkeyなら必要でしょう。
key無しで、単にデータの羅列を送りたいのなら、CSVやその他のテキストデータでも構いません。
(受信側がそれをきちんと解釈できるようにさえなっていれば良い)
その他にも、XML形式などでデータの受け渡しをする方法もあります。
種類は異なりますが、画像データなどであればバイナリで送信されます。
(画像の規格が別に存在するので)

>例えばres.jsonというライブラリがあった場合~~
そのライブラリがどこにあって、どのような機能のものなのか不明なので、ご質問にどのように関わっているのかわかりかねます。
    • good
    • 0
この回答へのお礼

ありがとう

すみません。ありがとうございました、

お礼日時:2022/04/06 21:33

こんばんは



>データ構造自体はサンプル等で分かるのですが~
送受信されているデータそのものはテキストです。
そのテキストを表示してみると、ご存じのjsonの構造になっています。
(一旦、テキスト化することによって、言語間の差異を除くことが可能になります)
ですので、送る側はデータをjson形式のテキストに変換し、受け取る側はそのテキストをオブジェクトなどに変換して利用しています。

大抵のサーバサイドの言語には、データをjson形式のテキストに変換するメソッドやライブラリが備えられているので、それを利用すれば簡単にテキストデータに変換できます。
もしも無い場合でも、プログラムで順にテキストに変換すれば、変換することは可能です。
(原理的には「key:value」の値をテキスト化するだけなので)

>図解があればいいのですが。
図にまではなりませんが・・
 1)バックエンドで、データをjson形式のテキストデータ化
 2)バックエンドから、jsonデータを送信
 3)フロントエンドで、jsonデータを受信
 4)フロントエンドで、json(テキスト)をオブジェクト化
といった手順になるかと。
この回答への補足あり
    • good
    • 0

json形式の文字列をレスポンスとしてクライアントに返却しているだけです。


クライアントはjsonをパースしてオブジェクトとして扱うための命令を利用して制御を実装します。
    • good
    • 0
この回答へのお礼

ありがとう

ありがとうございます。

お礼日時:2022/04/06 07:09

「どのように生成して」という意味が良くわかりませんが、目的は、「異なる言語でもデータをやり取りできる」という特徴があります。



カッコでくくって、key Value になってる、というおおざっぱな理解が出来てれば、あとは自分が利用したい言語にJSONライブラリがあるか。

PHPやRubyなどは標準でJSONライブラリがあるので、生成するときは key Value を与えればJSONにしてくれます。

逆に、受け取った時は、JSONを入れれば連想配列のように扱えます。
    • good
    • 0
この回答へのお礼

ありがとう

ありがとうございました。

お礼日時:2022/04/06 07:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!