2013-10-27 48 views
0

我正在嘗試創建存儲在mySQL中的數據的JSON表示形式。創建包含來自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和對象,因爲它應該在單個對象內。

我想首先創建一個包含methodTypes和對象的數組。 然後我以$ 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返回數組而不是對象。

+0

你可以發佈你與'json_encode'使用數組的'var_dump'?我想你可能在這方面有你的數據結構錯誤 – Machavity

+0

Machavity感謝您的迴應。我已更新帖子以顯示var_dump信息。我是否可以添加其他內容來幫助更清楚地說明問題? – blaine

+0

嘗試使用php數組,因爲它們也可以是關聯的,如果需要的話,'json_encode'會調整爲javascript對象。例如'$ arr ['foo'] = array('bar','gggg')'會轉換爲'{「foo」:[「bar」,「gggg」]}' – charlietfl

回答

1

編輯,以得到所需的輸出

$data = ['sessionToken' => '', 
    'roleName' => '', 
    'data' => [['methodTypes' => [''], 'objects' => ['']]] 
]; 

而且它產生。這工作,因爲我包裹在一個非關聯的一個

{"sessionToken":"","roleName":"","data":[{"methodTypes":[""],"objects":[""]}]} 

編輯

json_encode JavaScript數組一些更多的信息只包含數字鍵的關聯數組。期。如果你看起來像一個關聯數組,它確實是一個JS對象(可以用括號括起來,即var['name']var.name是等價的)。

由於json_encode無法在JSON中創建關聯數組,因此它會將關聯PHP數組轉換爲對象。所以你可以在上面的例子中看到,我得到了一個對象而不是數組,除非我沒有指定鍵。

echo json_encode(['name' => 'value']); 

息率

{"name":"value"} 

雖然

echo json_encode(['value']); 

息率

["value"] 
+0

Machavity我需要創建的JSON需要mathch:'{「sessionToken」:「」,「roleName」:「」,「data」:[{「methodTypes」:[「」], 「objects」:[「」]}]}'在非編程代碼中,通用格式將類似於'data。[]。{}。methodTypes'方括號[]表示JSON數組,括號{}表示一個JSON對象。我相信API是這樣的,因爲你可以發送多個對象。 – blaine

+0

編輯我的回覆。會給你你想要的字符串 – Machavity

相關問題