我的PHP Web服务未提供有效的JSON时出现问题
我正在使用类“mysql2json”来生成Json我的PHP Web服务未提供有效的JSON时出现问题,php,json,web-services,Php,Json,Web Services,我正在使用类“mysql2json”来生成Json <?php class mysql2json{ static public function getJSON($resultSet,$affectedRecords){ mb_internal_encoding("UTF-8"); $numberRows=0; $arrfieldName=array(); $i=0; $json="
<?php
class mysql2json{
static public function getJSON($resultSet,$affectedRecords){
mb_internal_encoding("UTF-8");
$numberRows=0;
$arrfieldName=array();
$i=0;
$json="";
//print("Test");
while ($i < mysql_num_fields($resultSet)) {
$meta = mysql_fetch_field($resultSet, $i);
if (!$meta) {
}else{
$arrfieldName[$i]=$meta->name;
}
$i++;
}
$i=0;
$json="{\n\"data\": [\n";
while($row=mysql_fetch_array($resultSet, MYSQL_NUM)) {
$i++;
//print("Ind ".$i."-$affectedRecords<br>");
$json.="{\n";
for($r=0;$r < count($arrfieldName);$r++) {
$json.="\"$arrfieldName[$r]\" : \"$row[$r]\"";
if($r < count($arrfieldName)-1){
$json.=",\n";
}else{
$json.="\n";
}
}
if($i!=$affectedRecords){
$json.="\n},\n";
}else{
$json.="\n}\n";
}
}
$json.="]\n};";
return $json;
}
}
?>
验证程序错误
Parse error on line 11:
...." } ]};
--------------------^
Expecting 'EOF', '}', ',', ']'
有什么想法吗 那么
json\u编码
函数和单独获取数据呢
关于
json\u编码
函数和单独获取数据如何
最佳解决方案
我不会为这门课操心的。只需使用本机PHP函数,因为它每次都可以非常轻松地为您提供格式正确的JSON
例如:
$json_arr = array();
while($row = mysql_fetch_array($resultSet, MYSQL_NUM)) {
$json_arr[] = $row;
}
echo json_encode($json_arr);
可以在上找到其他PHP JSON实现的列表(提示:向下滚动)
直接回答
通过调试输出查看更新的问题。看起来您的输出中有一个错误的分号(;
)
更改您的上一个附加
$json.="]\n};";
到
我认为这将解决您的问题。最佳解决方案
我不会为这门课操心的。只需使用本机PHP函数,因为它每次都可以非常轻松地为您提供格式正确的JSON
例如:
$json_arr = array();
while($row = mysql_fetch_array($resultSet, MYSQL_NUM)) {
$json_arr[] = $row;
}
echo json_encode($json_arr);
可以在上找到其他PHP JSON实现的列表(提示:向下滚动)
直接回答
通过调试输出查看更新的问题。看起来您的输出中有一个错误的分号(;
)
更改您的上一个附加
$json.="]\n};";
到
我认为这会解决你的问题。的
最后一个花括号后的代码>
错误
替换:
}
$json.="]\n};";
return $json;
}
与
应该能解决你的问题。这个
最后一个花括号后的代码>
错误
替换:
}
$json.="]\n};";
return $json;
}
与
应该能解决你的问题。+1我写的是同样的答案。不要重复你自己的JSON;要记住的另一件事是,如果要将application/json的头直接发送给处理程序,就必须发送它。我想,这不是真的关系,但这是一个需要考虑的问题。我正准备写同样的事情,这是我在PHP有JSONYNECODER()之前使用的技术。除非我会使用mysql\u fetch\u assoc()来获取字段名。这比OP所用的方法痛苦得多。请解释为什么这个答案遭到否决票。这是OP问题的正确答案,为他们的代码提供了一个解决方案,并有效地建议使用更好的方法对其进行改进。最初我使用了json_encode(),但我的输出有一些问题,所以我尝试了这个类,它似乎可以工作。现在我只想继续使用json_encode(),忘记这个类。谢谢大家。我写的是同样的答案。不要重复你自己的JSON;要记住的另一件事是,如果要将application/json的头直接发送给处理程序,就必须发送它。我想,这不是真的关系,但这是一个需要考虑的问题。我正准备写同样的事情,这是我在PHP有JSONYNECODER()之前使用的技术。除非我会使用mysql\u fetch\u assoc()来获取字段名。这比OP所用的方法痛苦得多。请解释为什么这个答案遭到否决票。这是OP问题的正确答案,为他们的代码提供了一个解决方案,并有效地建议使用更好的方法对其进行改进。最初我使用了json_encode(),但我的输出有一些问题,所以我尝试了这个类,它似乎可以工作。现在我只想继续使用json_encode(),忘记这个类。谢谢大家。虽然我仍然认为使用
json\u encode()
是一个更好的主意,但您可能想看看示例中的示例,其中他们在示例中附加PHP\u EOL
,而不是硬编码\n
s。如果您真的在使用当前的方法,那么附加一个PHP_EOF可能会有所帮助?虽然我仍然认为使用json_encode()
是一个更好的主意,但您可能想看看示例中附加PHP_EOL
的示例,而不是硬编码\n
s。如果您真的在使用当前的方法,那么添加PHP_EOF可能会有所帮助?