2014-04-02 87 views
0

我想在PHP中构建一些JSON。我是PHP新手,对此知之甚少。目前,我有以下几点:在PHP中格式化JSON

$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?

谢谢!

+5

建立一个包含你想要的数据和结构数组。然后使用json_encode()将其转换为JSON。 –

+1

未来:[PHP字符串](http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.single) – AbraCadaver

回答

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

1
$content = json_encode(array(
'content' => array(
    'person' => array(
     'name' => $name, 
     'email' => $email, 
     'title' => $subject, 
     'description' => array(
      'body' => $details 
      ) 
     ) 
    ) 
); 
echo $content; 
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);