[英]json array response for PHP web service
在此服務中,我得到輸出,但是我想要不同的輸出。 讓我解釋:
$customer_id = $_POST['customer_id'];
$response = array();
$qry="SELECT category FROM nesbaty_customer where c_id='".$customer_id."' ";
$qry_res=mysqli_query($con,$qry);
$jsonData = array();
while ($array = mysqli_fetch_assoc($qry_res))
{
$r= $array['category'];
$jsonData[]=explode(",",$r);
}
echo json_encode(array('data' =>$jsonData));
mysqli_close($con);
我得到這樣的輸出:
{
"data": {
"category": [
"Hotel",
"Saloon"
]
}
}
但是我想要這樣的輸出!
{"data":[{"category":"Hotel"},{"category":"Saloon"}]}
您無法完全得到所需的內容,因為您將擁有一個包含兩個相同鍵的數組。 您可以通過更改獲得類似的內容:
$r= $array['category'];
$jsonData[]=explode(",",$r);
至
foreach (explode(',', $array['category']) as $cat) {
$jsonData[]=array('category' => $cat);
}
$jsonData
將如下所示:
Array
(
[data] => Array
(
[0] => Array
(
[category] => Hotel
)
[1] => Array
(
[category] => Saloon
)
)
)
並且json_encode
的輸出將是:
{"data":[{"category":"Hotel"},{"category":"Saloon"}]}
鍵應該是唯一的,您不應重復“類別”作為鍵。
“一個名稱全都是唯一的對象是可以互操作的,因為所有接收該對象的軟件實現都將同意名稱-值映射。當一個對象中的名稱不是唯一的時,接收該對象的軟件的行為是不可預測的”。
有關JSON的定義,請參見https://tools.ietf.org/html/rfc7159 。
如您所見, json_encode使用此rfc:“ PHP按照原始»RFC 7159中的指定實現了JSON的超集。”
如果您確實要編寫非唯一鍵,則應編寫自定義json編碼函數,但解碼函數將具有不可預測的行為。
將每個類別添加為單獨的json對象,然后:
while ($array = mysqli_fetch_assoc($qry_res)) {
foreach ($array['category'] as $categoryName) {
$jsonData[] = ['category' => $categoryName];
}
}
這樣,您最終將得到一個對象數組,因此應該沒問題。
數組的鍵必須是唯一的
while($ array = mysqli_fetch_assoc($ qry_res)){
$jsonData[]=$array;
}
echo json_encode(array('data' =>$jsonData));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.