将json数据转换为php变量

将json数据转换为php变量,php,json,parsing,Php,Json,Parsing,我必须使用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"] } 我正在使用这个PH

我必须使用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”,“$sender”,“$receiver”和“$subject”。
我正在尝试将“references”的数据存储在数组“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> ";

}
?>

将整个文件存储为字符串,解码并将值存储在变量中。显示您使用的json。如果下一个参数为true,则json_decode()将返回一个关联数组。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代码

$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"];

{[
不是有效的JSON(除非它是字符串的一部分)。您不能为密钥设置数组。您应该一次读取整个文件,而不是逐行读取。输入中没有一行是有效的JSON。@这是真的,但整个内容也无效。这里有多个问题。请建议我更改您的JSON,这是这里的建议。谢谢@user3587554您的欢迎,如果你需要创建json,我也可以帮你。有了你有用的答案,我现在就可以做了。现在我没有足够的声誉投票支持你的答案。但是当我有足够的声望时……我一定会做的。非常感谢@user3587554@AkashGoyal你可能无法投票支持他的答案,但如果它解决了你的问题,你可以接受通过点击投票箭头下的复选标记,它将被标记为一个解决方案,并与代表一起奖励您和用户3587554。哦,谢谢,我不知道这个功能