使用 json_encode() 作为 JSON 表示 php 文件中的值

Use json_encode() for JSON representation of a value in php file

我需要帮助才能正确使用 json_encode() 到 return 我的 php 服务器脚本中的 JSON 值表示。据我所知,这不是通过 echo、print 或 loop 完成的,正如我在询问之前研究的所有其他问题中所解释的那样。

如何从我的 data.json 文件中获取 "Value"

    {
    "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_decode(),而不是 json_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_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

示例:http://sandbox.onlinephpfunctions.com/code/8f1de6493c35cadd0976532b36a23c2fb09bc7b2