JSONException:值<! - ?类型java.lang.String的php无法转换为JSONObject

时间:2017-08-16 10:56:53

标签: php android json

我想从Android端使用PHP文件(news.php)生成的JSON数据。我有一个PHP文件似乎正确生成JSON数据,我的Android端工作正常。问题是我得到了上述异常。

令我感到困惑的是,如果我将PHP文件生成的JSON详细信息输出复制到单独的文件并将其另存为JSON文件(例如news.json),我的Android应用程序可以使用JSON数据,但是如果我将它重新指向php(news.php)文件,我会收到上述异常。

我看过其他可能的重复问题,但它们并不适合我自己的问题。非常感谢任何帮助。

我有一个编码为JSON格式的php文件:

<预> <代码> <?PHP的 包括( “包括/ db_connection.php”); if(isset($ _ GET ['latest_news'])){     $ limit = $ _GET ['latest_news'];     $ query =“SELECT * FROM tbl_news_category c,tbl_news n WHERE c.cid = n.cat_id ORDER BY n.nid DESC LIMIT $ limit”;     $ result = mysqli_query($ con,$ query); } $ total_records = mysqli_num_rows($ result); if($ total_records> = 1){     while($ link [] = mysqli_fetch_array($ result,MYSQLI_ASSOC)){         $ set ['RecentNews'] = $ link;     } } echo $ val = str_replace('\\ /','/',json_encode($ set,JSON_UNESCAPED_UNICODE)); //} ?>

然后我有一个'Android JSON class'代码片段:

  try {
    JSONObject mainJson = new JSONObject(result);
    JSONArray jsonArray = mainJson.getJSONArray(Constant.CATEGORY_ARRAY_NAME);
    JSONObject objJson = null;
    for(int i = 0; i  

Android'常量类'代码段:

  public class Constants实现Serializable {

    public static final String SERVER_URL =“http://192.100.1.1:4000/news”;

    public static final String LATEST_URL =“http://192.100.1.1:4000/news/news.php?latest_news=10”;

    public static final String CATEGORY_ARRAY_NAME =“RecentNews”;
    public static final String CATEGORY_NAME =“category_name”;
    public static final String CATEGORY_CID =“cid”;
    public static final String CATEGORY_IMAGE =“category_image”;
    ...
}
 

编辑:

JSON输出:

<预> <代码> { “RecentNews”:[{ “CID”: “7”, “CATEGORY_NAME”: “世界”, “category_image”: “91771_world.jpg”, “状态”: “1”, “NID” :“9”,“cat_id”:“7”,“news_heading”:“世界样本新闻标题”,“news_description”:“ 世界样本新闻 \ r \ n”个, “news_image”: “88702_IMG_5038.JPG”, “news_date”: “2017年8月16日”, “news_status”: “1”},{ “CID”: “12”, “CATEGORY_NAME”: “IT”,“category_image”:“98162_IMG_1303.JPG”,“status”:“1”,“nid”:“8”,“cat_id”:“12”,“news_heading”:“IT示例新闻标题”,“ news_description “:” IT样本新闻 \ r \ n”个, “news_image”: “24966_IMG_5018.JPG”, “news_date”: “2017年8月3日”, “news_status”: “1”},{ “CID”: “5”, “CATEGORY_NAME”: “Business”,“category_image”:“4591_download.jpg”,“status”:“1”,“nid”:“7”,“cat_id”:“5”,“news_heading”:“商业样本新闻标题”,“ news_description “:” 商业样本新闻 \ r \ n”个, “news_image”: “13015_IMG_5017.JPG”, “news_date”: “2017年8月2日”, “news_status”: “1”},{ “CID”: “4”, “CATEGORY_NAME”: “Sports”,“category_image”:“22814_sports.jpg”,“status”:“1”,“nid”:“6”,“cat_id”:“4”,“news_heading”:“体育样本新闻标题”,“ news_description “:” 体育样本新闻 \ r \ n”个, “news_image”: “72021_IMG_5016.JPG”, “news_date”: “2017年8月1日”, “news_status”: “1”}]}

1 个答案:

答案 0 :(得分:0)

感谢 josef.adamcik ,我使用Log.d(“tag”,result)获取异常日志,并突出显示它确实正在读取以“{”开头的php文件{1}}“。

news.php文件中的'db_connection.php'文件'included'在其中有一个以<!--开头的部分,删除此部分后一切正常。

编辑:

我在php中使用<!--comments -->来代替<!--comments-->

进行多行注释

因为我使用的是Brackets IDE,所以无论如何它都会使/* comments */部分变灰,我忽略了它是错误的。