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

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

新規登録して質問してみよう
ただいま回答率
85.48%
JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

3105閲覧

jsonデータをphpで使う方法を教えてください

blossan

総合スコア154

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2016/12/19 02:34

御世話になります。
apiのpost通信をphpで実現したいと考えています。
他の言語でうまく起動したのですが、渡すjsonデータの形がphpの文法エラーに引っかかってしまいました。
自分になりphpで書いても問題ないよう読み替えをしたのですが、まだ文法エラーが表示されています。

以下のjsonデータをphpで使う場合は、どのような書き方をすればよいのでしょうか?

json

1$payload = { 2 "name": "Trafficvolume60", 3 "description": "Trafficvolume60", 4 "ruleConfig": { 5 "properties": { 6 "limitTotalTrafficMegaByte":100, 7 "inactiveTimeoutDateConst": "IMMEDIATELY" 8 }, 9 "type": "CumulativeTrafficRule" 10 }, 11 "actionConfigList": [ 12 { 13 "properties": { 14 "secretAccessKey": "※※", 15 "endpoint": "https://lambda.ap-northeast-1.amazonaws.com", 16 "accessKey": "※※", 17 "functionName": "Trafficvolume60", 18 "executionDateTimeConst": "IMMEDIATELY", 19 }, 20 "type": "InvokeAWSLambdaAction" 21 } 22 ], 23 "status": "active", 24 "targetGroupId": "※※" 25 };

エラー
Parse error: syntax error, unexpected '{'

読み替えた一例

json

1$payload = { 2 'nam'=>'Trafficvolume60', 3 'description'=>'Trafficvolume60', 4 'ruleConfig'=>{ 5 'properties'=>{ 6 'limitTotalTrafficMegaByte'=>100, 7 'inactiveTimeoutDateConst'=>'IMMEDIATELY' 8 }, 9 'type'=>'CumulativeTrafficRule' 10 }, 11 'actionConfigList'=>[ 12 { 13 'properties'=>{ 14 'secretAccessKey'=> 15 '※※', 16 'endpoint'=>'https://lambda.ap-northeast-1.amazonaws.com', 17 'accessKey'=>'※※', 18 'functionName'=>'Trafficvolume60', 19 'executionDateTimeConst'=>'IMMEDIATELY', 20 }, 21 'type'=>'InvokeAWSLambdaAction' 22 } 23 ], 24 'status'=>'active', 25 'targetGroupId'=>'※※' 26 }; 27

エラー
Parse error: syntax error, unexpected '{'

エラーは、jsonデータが始まる行に両方と発生しています。
よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

JSONはあくまでJavaScriptの記法なので、PHPでそのまま書いても文法エラーになります。

方法は2つあって、

その1 PHPの書き方に直す {}[]に、"a": "b""a" => "b"に書き換えればPHPの配列として使えます。

その2 ヒアドキュメントから取り出す

php

1$payload = json_decode( <<<JSON 2{ 3 "name": "Trafficvolume60", 4 "description": "Trafficvolume60", 5 "ruleConfig": { 6 "properties": { 7 "limitTotalTrafficMegaByte":100, 8 "inactiveTimeoutDateConst": "IMMEDIATELY" 9 }, 10 "type": "CumulativeTrafficRule" 11 }, 12 "actionConfigList": [ 13 { 14 "properties": { 15 "secretAccessKey": "※※", 16 "endpoint": "https://lambda.ap-northeast-1.amazonaws.com", 17 "accessKey": "※※", 18 "functionName": "Trafficvolume60", 19 "executionDateTimeConst": "IMMEDIATELY", 20 }, 21 "type": "InvokeAWSLambdaAction" 22 } 23 ], 24 "status": "active", 25 "targetGroupId": "※※" 26 } 27JSON 28);

投稿2016/12/19 02:39

maisumakun

総合スコア145183

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

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

blossan

2016/12/19 03:27

jsonデータで渡す必要があり、json_encodeを利用していますが、【その2 ヒアドキュメントから取り出す】でもどうようの処理をしても問題ないでしょうか?
maisumakun

2016/12/19 04:00

直接JSONで渡したいなら、json_decodeを外してヒアドキュメントとして書いておけばいいでしょう。
blossan

2016/12/19 04:01

回答ありがとうございます。
blossan

2016/12/19 08:02 編集

無事実行できました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問