繁体   English   中英

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

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

我需要帮助才能正确使用json_encode()在我的php服务器脚本中返回值的JSON表示。 据我所知,这不是用回声,印刷或循环完成的,正如我在询问之前所研究的所有其他问题中所解释的那样。

如何从我的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 =

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

要从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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM