2017-04-16 187 views
2

所以我试图从我的MacOS应用程序发送一个jsont字符串到我的服务器,并且比服务器发送给我一个电子邮件中的字符串。 PHP代码如下所示:PHP代码将额外的字符添加到JSON字符串

<?php 
$postVar = $_POST['data']; 

if (!empty($postVar)) { 
$to  = '<myemailaddress>'; 
$subject = 'data recieved'; 
$message = $postVar; 
$headers = 'From: <someemailaddresshere>' . "\r\n" . 
    'Reply-To: [email protected]' . "\r\n" . 
    'X-Mailer: PHP/' . phpversion(); 

mail($to, $subject, $message, $headers); 
} 
?> 

这临危数据并返回200响应但是发送到服务器字符串不通过电子邮件发送的字符串相匹配。

串的样本服务器:

{ 
    "µTorrent" : { 
    "isActive" : false 
    }, 
    "Bear" : { 
    "isActive" : false 
    }, 
    "Terminal" : { 
    "isActive" : false 
    } 
} 

电子邮件收到字符串的示例:

{ 
    \"µTorrent\" : { 
    \"isActive\" : false 
    }, 
    \"Bear\" : { 
    \"isActive\" : false 
    }, 
    \"Terminal\" : { 
    \"isActive\" : false 
    } 
} 

的反斜线不应该在那里,什么可能导致这个问题?

+0

请检查返回json_encode可能您已经应用了'json_encode($ your_post_array)'不止一次。 –

+0

你使用哪个PHP版本?可能会有一些老的(<5.4)并启用了“魔术引号”? (http://php.net/magicquotes) – mochalygin

回答

0

出于安全原因添加了反斜杠。 如果你只是想删除反斜杠,你可以使用反斜杠。

$message = stripslashes($postVar); 

但我建议来创建数据的数组,你的数组

+0

好吧,所以这个问题解决了问题,因为内置的jsonserialization有一个看起来就像魔术引号的缺陷,所以问题与swift代码有关。 – user6879072

+0

我对swift不太了解,但是我发现了一个关于json反序列化的例子:https://www.raywenderlich.com/150322/swift-json-tutorial-2 希望它能帮助你 – wilfleaji