[英]PHP: how to generate this JSON?
我有一個數組$ a,包含以下數據:
[0]=>'text',
[1]=>'text1, text2, text3'
我想從此數據生成JSON對象,如下所示:
'{"TestingApplications": [
{ "ApplicationName": "text" },
{ "ApplicationName": "text1" },
{ "ApplicationName": "text2" },
{ "ApplicationName": "text3" }
]
}'
我做了什么:
<?php
$a=array(0=>"text", 1=>"text1, text2, text3");
$r = array();
foreach($a as $key => $val){
if (strpos($val,',') !== false) {
$v = explode(',', $val);
foreach($v as $k => $l){
array_push($r, $l);
}
} else{
array_push($r, $val);
}
}
因此,如何使用$r
存儲的數據生成所需的JSON?
我將從創建json對象的基本結構開始:
$temp = [
'TestingApplications' => [],
];
接下來,遍歷您擁有的數據,並像您現在正在執行的那樣explode
所有包含逗號的字符串:
foreach ($a as $value) {
$exploded = explode(',', $value);//no need to check for comma's
foreach ($exploded as $name) {
//perhaps consider calling trim on $name here
$temp['TestingApplications'][] = ['ApplicationName' => $name];
}
}
然后最后, json_encode
很多:
return json_encode($temp);
盡管說實話:我確實會嘗試更改將數據提供給代碼的方式。 如果所有字符串值都應以相同的方式處理,則有時將它們分配給不同的鍵(在$a
數組中)是完全不可接受的,但在其他情況下,它們位於逗號分隔的字符串中。
至少對我來說,這看起來像是XY問題
嘗試如下:
<?php
$a=array(0=>"text", 1=>"text1, text2, text3");
$r = array();$final = array();
foreach($a as $key => $val){
if (strpos($val,',') >= 0) {
$v = explode(',', $val);
foreach($v as $k => $l){
$r[]['ApplicationName']= "$l";
}
}
}
$final['TestingApplications'] = $r;
echo json_encode($final);
?>
您可以嘗試json_encode 。 這將返回值的JSON表示形式
例如:
$arr = array(0=>"text", 1=>"text1, text2, text3");
echo json_encode($arr);
希望這對您有幫助。
json_encode(); 用於從php中的數組轉換json中的數據。
$array = array('TestingApplications'=>array( "appname1"=>"text1","appname2"=>"text2", "appname3"=>"text3"));
echo json_encode($array);
假設您有以下來源:
$sourceArray = array(
'text',
'text1, text2, text3',
);
您需要先構建正確的PHP數組,然后才能將其轉換為JSON。 我建議以遞歸的方式這樣做,同時也修剪空白空間:
// get a flat array
$tmpArray = array_map(function($array) {
return explode(',', $array);
}, $sourceArray);
$flatArray = array();
array_walk_recursive($tmpArray, function($a) use (&$flatArray) {
$flatArray[] = trim($a);
});
$toJsonArray = array('TestingApplications' => array());
foreach ($flatArray as $val) {
$toJsonArray['TestingApplications'][] = array(
'ApplicationName' => $val,
);
}
然后,您只需將其編碼為JSON: echo json_encode($toJsonArray);
要生成所需的JSON對象,數組應如下所示:
$arr = array(
'TestingApplications' => array(
array('ApplicationName' => 'text'),
array('ApplicationName' => 'text1'),
array('ApplicationName' => 'text2'),
array('ApplicationName' => 'text3'),
)
);
然后將此數組編碼為json: echo json_encode($arr);
它將返回所需的JSON對象
嘗試這個。
$a=array(0=>"text", 1=>"text1,text2,text3");
$r = array();
foreach($a as $key => $val){
if (strpos($val,',') !== false) {
$v = explode(',', $val);
foreach($v as $k => $l){
$final['ApplicationName']=$l;
$final_arr[]=$final;
}
} else{
$final['ApplicationName']=$val;
$final_arr[]=$final;
}
}
$result['TestingApplications']=$final_arr;
echo json_encode($result);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.