是否可以通过邮件发送json数组?

时间:2012-11-07 00:35:16

标签: php html json post

我试图将json数组发送到php post请求。

$myarray[] = 500;
$myarray[] = "hello world";

如何将$ myarray json数据发送到php post请求?

这是我试过的:

<form name="input" action="post.php">
<input type="hidden" name="json" value="[500,'hello world']" />
<input type="submit" value="Submit">
</form>

我正在测试API并被告知它只需要json数据......但我似乎无法让它工作。我的猜测是我发送错误的json数据。有什么想法吗?

2 个答案:

答案 0 :(得分:3)

你遇到的问题是这个字符串不是正确的JSON:[500,'hello world']

这将是正确的JSON [500,"hello world"]。 JSON对格式化非常严格,要求所有字符串值都用双引号括起来,并且不要单引号。

要避免出现问题,应该使用php函数json_encode()json_decode()

例如,

<?php
    $myarray[] = 500;
    $myarray[] = "hello world";
    $myjson = json_encode($myarray);
?>
<form name="input" action="post.php">
    <input type="hidden" name="json" value="<?php echo $myjson ?>" />
    <input type="submit" value="Submit">
</form>

在post.php中你会这样读,

<?php
    $posted_data = array();
    if (!empty($_POST['json'])) {
        $posted_data = json_decode($_POST['json'], true);
    }
    print_r($posted_data);
?>

true中的json_decode()标志告诉您希望它作为关联数组而不是PHP对象的函数,这是它的默认行为。

print_r()函数将输出转换后的JSON数组的php结构:

Array(
    [0] => 500
    [1] => hello world
) 

答案 1 :(得分:1)

API是您的第三方还是您制作的?

如果是您的,请使用您的表单发送的数据就像在API上一样简单:

<?php
    $data = json_decode($_REQUEST['json']);

    echo $data[0]; // Should output 500
    echo $data[1]; // Should output hello world

如果是第三方,可能他们希望你在邮寄正文中发送json。要实现这一目标,请按照以下文章发表:How to post JSON to PHP with curl