Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将json_encode()用于php文件中值的json表示_Php_Json_Fine Uploader - Fatal编程技术网

将json_encode()用于php文件中值的json表示

将json_encode()用于php文件中值的json表示,php,json,fine-uploader,Php,Json,Fine Uploader,我需要帮助来正确使用json_encode()返回php服务器脚本中值的json表示形式。据我所知,这并不是像我在提问之前研究的所有其他问题中所解释的那样,通过echo、print或loop来完成的 如何从data.json文件中获取一个“值” { "clientPrivateKey": { "Name":"AWS_CLIENT_SECRET_KEY", "Value":"someexammplestring" }, "serverPu

我需要帮助来正确使用json_encode()返回php服务器脚本中值的json表示形式。据我所知,这并不是像我在提问之前研究的所有其他问题中所解释的那样,通过echo、print或loop来完成的

如何从data.json文件中获取一个“值”

    {
    "clientPrivateKey": {
      "Name":"AWS_CLIENT_SECRET_KEY",
      "Value":"someexammplestring"
      },
    "serverPublicKey": {
      "Name":"AWS_SERVER_PUBLIC_KEY",
      "Value":"someexammplestring"
      },
    "serverPrivateKey": {
      "Name":"AWS_SERVER_PRIVATE_KEY",
      "Value":"someexammplestring"
      },
    "expectedBucketName": {
      "Name":"S3_BUCKET_NAME",
      "Value":"someexammplestring"
      }
    }
在我的PHP服务器脚本中输入相应的PHP变量

    $clientPrivateKey =
    $serverPublicKey =
    $serverPrivateKey =
    $expectedBucketName =

我这里只需要“Value”字符串。该值应该在计算签名的php服务器脚本中给出有效的JSON响应,否则它将{“invalid”:true}。谢谢你的帮助

要从JSON文件获取数据,可以使用
JSON\u decode()
,而不是
JSON\u encode()
。然后使用普通PHP对象语法访问它的各个部分

$json = file_get_contents("data.json");
$data = json_decode($json);
$clientPrivateKey = $data->clientPrivateKey->Value;
$serverPublicKey = $data->serverPublicKey->Value;
$serverPrivateKey = $data->serverPrivateKey->Value;
$expectedBucketName = $data->expectedBucketName->Value;

1。您需要解码JSON以使其可用:

$json = json_decode($jsonString, true);
请注意,第二个参数设置为“true”,这意味着我们需要关联数组而不是对象

2.您现在可以将JSON用作常规关联数组:

$clientPrivateKey = $json['clientPrivateKey']['Value'];
您可以按照前面的示例访问所需的其他两个值。
如果您想知道偏移量是否有效,可以对其使用isset()函数。

您需要像这样使用
json\u decode()

$json = json_decode({
"clientPrivateKey": {
    "Name":"AWS_CLIENT_SECRET_KEY",
    "Value":"someexammplestring"
},
"serverPublicKey": {
    "Name":"AWS_SERVER_PUBLIC_KEY",
    "Value":"someexammplestring"
},
"serverPrivateKey": {
    "Name":"AWS_SERVER_PRIVATE_KEY",
    "Value":"someexammplestring"
},
"expectedBucketName": {
    "Name":"S3_BUCKET_NAME",
    "Value":"someexammplestring"
}
},true);

$clientPrivateKey = $json['clientPrivateKey']['Value'];
$serverPublicKey = $json['serverPublicKey']['Value'];
$serverPrivateKey = $json['serverPrivateKey']['Value'];
$expectedBucketName = $json['expectedBucketName']['Value'];
好了:

<?php
$json = json_decode(file_get_contents('data.json'));
$clientPrivateKey = $json->clientPrivateKey->Value;
// ...

您可以使用此一行代码自动从数组中提取变量:

 extract(array_combine(array_keys($array=json_decode($json,true)),array_column($array,"Value")));
// $clientPrivateKey,$serverPublicKey,$serverPrivateKey,$expectedBucketName are now set

示例:

看起来您的思路是正确的-但不是对
data.json
文件的内容使用
json\u encode
,我认为您应该改为使用
json\u decode
函数,该函数允许您直接以数组或对象的形式访问json的内容。除非您非常确定数据源,否则提取是危险的,因为它可以删除任意变量。