mySQL に保存されているデータの JSON 表現を作成しようとしています。
RESTful API を文書化しようとしています。
PHP の json_encode() 関数を使用しています。
次のようなデータを含むテーブルがあります
1) 名前 2) 親 3) data_type (JSON データ型に一致するオブジェクト/配列/文字列/数値) 4) 値
mySQL データベースにデータを追加するだけで、これらの JSON 文字列を作成できる一般化された関数を作成しようとしています。
ただし、オブジェクトと配列の両方の操作に問題があります。
たとえば、JSON は次のようになります。
{
"sessionToken":"","roleName":""
,"data":[
{
"methodTypes":[""] , "objects":[""]
}
]
}
ただし、次のように出てきます。
{
"sessionToken":"","roleName":""
,"data":[
{
"methodTypes":[""]
}
,{
"objects":[""]
}
]
}
これは、何らかの理由で私のコードが methodType とオブジェクトの両方のオブジェクトを追加していることを示しています。これは、単一のオブジェクト内にある必要があるためです。
メソッドタイプとオブジェクトを含む配列を最初に作成しようとしています。次に、$objects->$A の形式でオブジェクトを作成し、これを最初のステップで作成した配列と等しくします。次に、JSON 生成用のプライマリ データ配列に追加します。
同じJSONで配列とオブジェクトの両方が必要な場合のJSONの使用例を示す例を探していましたが、成功しませんでした。
正しい方向へのポインタは大歓迎です。
更新#1:
json_encode() に供給される配列の var_dump は次のとおりです。
array(3) { ["sessionToken"]=> string(0) "" ["roleName"]=> string(0) "" ["data"]=> array(2) { [0]=> array(1) { ["methodTypes"]=> array(1) { [0]=> string(0) "" } } [1]=> array(1) { ["objects"]=> array(1) { [0]=> string(0) "" } } } }
ここで、既知の適切な JSON を取得して json_decode() を実行すると、var_dump は次のようになります。
object(stdClass)#3 (3) { ["sessionToken"]=> string(0) "" ["roleName"]=> string(0) "" ["data"]=> array(1) { [0]=> object(stdClass)#4 (2) { ["methodTypes"]=> array(1) { [0]=> string(0) "" } ["objects"]=> array(1) { [0]=> string(0) "" } } } }
また
array(3) { ["sessionToken"]=> string(0) "" ["roleName"]=> string(0) "" ["data"]=> array(1) { [0]=> array(2) { ["methodTypes"]=> array(1) { [0]=> string(0) "" } ["objects"]=> array(1) { [0]=> string(0) "" } } } }
オブジェクトの代わりに配列を返すようにTRUEに設定した場合。