Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我的PHP Web服务未提供有效的JSON时出现问题_Php_Json_Web Services - Fatal编程技术网

我的PHP Web服务未提供有效的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="

我正在使用类“mysql2json”来生成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可能会有所帮助?