我正在尝试在PHP中构建一些JSON。我是PHP的新手,对它知之甚少。目前,我有以下内容:
$json = '{"content":{"person":{"name":"$name", "email":"$email"}, "title":"$subject", "description": { "body": "$details" }}}';
$name
,$email
,$subject
和$details
都是之前定义的变量。如果我使用上面的代码打印出$ json,我会得到以下内容:
{"content":{"person":{"name":"$name", "email":"$email"}, "title":"$subject", "description": { "body": "$details" }}}'
换句话说,我的变量没有替换字符串中的占位符。如何使用变量作为键值来构建一些JSON?
谢谢!
答案 0 :(得分:1)
正如评论中所提到的,最好的方法是将数据构建到您想要的结构中,并使用json_encode来修复它。
您特定字符串未替换变量的原因是因为它被'包围。而不是"
$json = "{\"content\":{\"person\":{\"name\":\"$name\", \"email\":\"$email\"}, \"title\":\"$subject\", \"description\": { \"body\": \"$details\" }}}'\";
http://www.php.net/manual/en/language.types.string.php#language.types.string.parsing
答案 1 :(得分:1)
$content = json_encode(array(
'content' => array(
'person' => array(
'name' => $name,
'email' => $email,
'title' => $subject,
'description' => array(
'body' => $details
)
)
)
);
echo $content;
答案 2 :(得分:1)
在PHP中,双引号和单引号做不同的事情;如果使用双引号,则只能在字符串中使用内联变量:
$test = 'world';
echo 'Hello $test!'; // Prints: Hello $test!
echo "Hello $test!"; // Prints: Hello world!
如果使用双引号括起json字符串,则需要转义其中的所有双引号:
$json = "{\"content\":{\"person\":{\"name\":\"$name\", \"email\":\"$email\"}, \"title\":\"$subject\", \"description\": { \"body\": \"$details\" }}}";
替代方法
注意:你熟悉PHP数组吗? PHP具有将数组转换为JSON字符串的函数json_encode
- 这样做可能会使代码更容易(特别是如果你的json字符串在任何时候变得更大/更复杂)
$json = json_encode(array
(
"content" => array
(
"person" => array
(
"name" => $name,
"email" => $email
),
"title" => $subject,
"description" => array
(
"body" => $details
)
)
));
这些解决方案中的任何一个都应该为$json
提供您期望的值
希望这有助于:) x
答案 3 :(得分:0)
文档总是非常有用,请查看字符串的文档,这里将说明如何在单引号或双引号字符串中使用变量。
<强> Documentation on Strings 强>
更简单的解决方案是使用数组和json_encode,它将输出您在问题中的内容:
<?php
$array = array(
'content' => array(
'person' => array(
'name' => $name,
'email' => $email,
),
'title' => $subject,
'description' => array(
'body' => $details,
),
),
);
$json = json_encode($array);