通过PHP(Campaign Monitor)发送JSON数组


Sending JSON Array via PHP (Campaign Monitor)

我有一个标记为sample.txt的示例JSON数组,它是从一个捕获用户名和电子邮件的抽奖表单中发送的。我使用的是WooBox,所以JSON数组通过每个条目发送信息,所以这里有两个条目:http://pastebin.ca/3409546

关于之前的一个问题,我被告知要打破][以便JSON_ENCODE可以计算单独的条目。我只想捕获名称和电子邮件,并将数组导入我的电子邮件数据库(活动监视器)。

我的问题是:如何将JSON变量标签添加到数组中?如果你看到我的代码,我已经尝试使用标签$email。这是正确的表单吗?还是应该是带有for循环的电子邮件[0]?

 $url = 'http://www.mywebsite.com/sweeps/test.txt';
 $content = file_get_contents($url);
 $json = json_decode($content,true);
 $tmp = explode('][', $json_string);
 if (!count($tmp)) {
 $json = json_decode($json_string);
 var_dump($json);
 } else {
 foreach ($tmp as $json_part) {
    $json = json_decode('['.rtrim(ltrim($json_string, '['), ']').']');
    var_dump($json);
}
}
 require_once 'csrest_general.php';
 require_once 'csrest_subscribers.php';
 $auth = array(
 'api_key' => 'xxxxxxxxxxxxxxx');
 $wrap = new CS_REST_Subscribers('xxxxxxxxxx', $auth);
 $result = $wrap->add($json(
'EmailAddress' => $email,
'Name' => $custom_3_first,
'Resubscribe' => false
 ));

https://github.com/campaignmonitor/createsend-php/blob/master/samples/subscriber/add.php

这应该很容易:如果你有一个JSON字符串,并对它调用json_decode($string, true),你可以在PHP变量中得到它的等价物,简单明了。从那里,你可以像访问任何PHP数组、对象等一样访问它。

问题是,您没有合适的JSON字符串。您有一个看起来像JSON的字符串,但不是有效的JSON。把它穿过门楣,你就会明白我的意思了。

PHP不知道该如何处理您假定的JSON,所以您必须求助于手动解析,这不是我建议的路径。尽管如此,你还是快到了。

require_once 'csrest_general.php';
require_once 'csrest_subscribers.php';
$auth = array('api_key' => 'xxxxxxxxxxxxxxx');
$wrap = new CS_REST_Subscribers('xxxxxxxxxx', $auth);
$url = 'http://www.mywebsite.com/sweeps/test.txt';
$content = file_get_contents($url);    
$tmp = explode('][', $content);
foreach ($tmp as $json_part) {
   $user = json_decode('['.rtrim(ltrim($json_string, '['), ']').']', true);
   $result = $wrap->add(array(
        'EmailAddress' => $user->email,
        'Name' => $user->fullname,
        'Resubscribe' => true
    ));
}