我正在将一些值从android/java发送到服务器。
首先,我创建一个 JSONArray 对象:
JSONArray JSONsamples = new JSONArray();
然后我通过以下方式填充 JSONArray:
for(.....)
{
if(...)
{
JSONsamples.put(storedArraylist.get(i));
}
}
然后我通过帖子发送值:
userParameters.add(new BasicNameValuePair("samples", JSONsamples.toString()));
.
.
Http_Client.executeHttpPost(getApplicationContext(), POST_url, userParameters);
.
然后在服务器上,我尝试将这些值存储到 php 数组中,但它不起作用:
$samplesarray = $_POST["samples"];
$samplesarray = json_decode($samplesarray,true);
在解码之前,如果我回显$samplesarray,我只得到封装在这些"值"中的第一个值,在json_decode之后,当我回显$samplesarray时,我得到一个预期的参数,但发现 null 错误。
请帮忙。
魔术引号应该关闭,因为它会在"
值之前添加一个'
。这会破坏您案例中的 json 数据。
请在此处阅读更多关于为什么不应该使用魔术报价的信息:http://php.net/manual/en/security.magicquotes.whynot.php
解决方案是删除魔术引号,或者至少检查它是否打开并从那里开始工作。 @steven提醒了我这一点,谢谢。
因此,在服务器端,我进行以下检查以确保正确的json并且它可以工作:
$samplesarray = get_magic_quotes_gpc() ? stripslashes($_REQUEST['samples']) : $_REQUEST['samples'];