我必须使用PHP解析这个json数据并将值存储到PHP变量中。
{
"sender": "am@email.com",
"receiver": "ak@email.com",
"msg_id": "msg1_am@email.com",
"subject": "Group Discussion",
"references": ["msg1_aman@email.com","msg1_s@email.com","msg1_v@email.com"]
}
我正在使用这个PHP代码,它无法正常工作;请检查一下。
对于字段' sender',' receiver',' msg_id'和' subject,我使用的是PHP变量' $ msg_id& #39;,' $ sender',' $ receiver'和' $ subject'。
我正在尝试存储'参考资料的数据。在数组' ref_id'。
此外,文件' dataset_f.json'以下列方式提供内容:
{ "sender":"aman@email.com","receiver":"akash@email.com","msg_id":"msg1_aman@email.com","subject": "Project Discussion","references":["msg1_aman@email.com","msg1_s@email.com","msg1_v@email.com"]}
{ "sender":"akash@email.com","receiver":"aman@email.com","msg_id":"msg1_akash@email.com","subject": "Project Discussion","references":["msg1_aman@email.com","msg1_s@email.com","msg1_v@email.com"]}
这就是为什么php代码逐行读取文件
<?php
$h1 = fopen("dataset_f.json", "r");
while(!feof($h1)){
$line = fgets($h1);
$test_case = json_decode($line);
$ref_id = array();
$msg_id = $test_case->{'msg_id'};
$sender = $test_case->{'sender'};
$receiver = $test_case->{'receiver'};
$subject = $test_case->{'subject'};
foreach($test_case as $val)
{
foreach($val -> references as $refer)
{
array_push($ref_id, $refer->ref);
}
}
// printing the values
$arrlen=count($ref_id);
for($x=0;$x<$arrlen;$x++)
{ echo $ref_id[$x]." "; }
echo $msg_id." ".$sender." ".$receiver." ".$subject." <br> ";
}
?>
答案 0 :(得分:6)
将整个文件存储为字符串,对其进行解码并将值存储在变量中。显示您使用的json。你用的是&gt;如果对象不是数组,则json_decode()返回关联数组(如果下一个参数为true)。 ref_id将保存以逗号分隔的字符串。
dataset_f.json
{
"sender":"am@email.com",
"receiver":"ak@email.com",
"msg_id":"msg1_am@email.com",
"subject":"Group Discussion",
"references":["msg1_aman@email.com","msg1_s@email.com","msg1_v@email.com"]
}
php code
$json = file_get_contents("dataset_f.json");
$data = json_decode($json, true);
// here depends on the json
$ref_id = ( ( is_array( $data["references"] ) ? implode(", ", $data["references"]) : $data["references"] ) ); // array to string
$msg_id = $data["msg_id"];
$sender = $data["sender"];
$receiver = $data["receiver"];
$subject = $data["subject"];