我在服务器上存储了一个JSON文件,需要向其中添加数据。我已成功将文件检索到内存中并成功解析了文件。我很难将新的JSON数据放置在正确的位置。
这是我的JSON文件的格式:
{
"emails": [
{
"group": "1st Group",
"list": [
{
"id": 1,
"subject": "Testing 1"
},
{
"id": 2,
"subject": "Testing 2"
}
] // End list array
}, // End 1st Group
{
"group": "2nd Group",
"list": [
{
"id": 3,
"subject": "Testing 3"
},
{
"id": 4,
"subject": "Testing 4"
}
] // End list array
} // End 2nd Group
/* NEED TO INSERT NEW DATA HERE */
] // End emails array
}
我试图group
list
在最后一个之后追加一个新的group
list
。在此示例中,该代码将在此行之后:} // End 2nd Group
。
这是我的PHP代码,该代码从我的服务器获取JSON文件并进行解析:
$getJSON = file_get_contents('emails.json');
$tempArray = json_decode($getJSON, true);
$numberOfGroups = count($tempArray['emails'][0]);
这是我的php代码,用于创建JSON文件的格式/布局:
$groupArray = array();
$json = array( 'emails' => array() );
foreach ($contextIORequest->getData() as $message) {
$newTZ = new DateTimeZone("America/Chicago");
$currentTime = new DateTime();
$currentTime = DateTime::createFromFormat('U', $message['date_received']);
$currentTime->setTimezone($newTZ);
$formattedDateReceived = $currentTime->format('F j, Y');
if (!in_array($formattedDateReceived, $groupArray)) {
array_push( $json['emails'],
array(
'group' => $formattedDateReceived,
'list' => array()
)
);
$groupArray[] = $formattedDateReceived;
}
$body = str_replace(array("\r\n","\n"),"", $message['body'][0]['content']);
$newBody = preg_replace('!\s+!', ' ', $body);
array_push($json['emails'][array_search($formattedDateReceived,$groupArray)]['list'],
array(
'id' => $message['message_id'],
'subject'=> addslashes($message['subject']),
'to' => array("Me"),
'body' => $newBody,
'time' => $formattedDateReceived,
'datetime' => $formattedDateReceived,
'from' => $message['addresses']['from']['name'],
'dp' => "assets/img/profiles/avatar.jpg",
'dpRetina' => "assets/img/profiles/avatar2x.jpg"
)
);
} // end foreach loop
// Output the JSON
header('Content-Type: application/json');
echo json_encode($json);
那么我将如何group
list
在最后一个之后追加一个新的group
list
呢?这需要在没有实际包含emails
用于创建JSON的数组的情况下完成。
在json_decode
处理序列化数据(true
像完成操作一样传递第二个参数)之后,在PHP中将有一个关联数组,该数组在名为的键处具有一个元素emails
。该元素是一个数组,其中包含要向其添加另一个的组列表。所以这是一个问题:
$data = json_decode($getJSON, true);
$data['emails'][] = $TheNewGroupList;
不要让它以JSON格式的序列化数据开头的事实让您感到困惑。一旦运行,json_decode
它就只是一个PHP数据结构(对象或数组),对其进行的操作就像其他任何PHP数据一样。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句