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



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

真正让我感到困惑的是,如果我将 PHP 文件生成的 JSON 详细信息输出复制到一个单独的文件中并将其保存为 JSON 文件(例如 news.json(,我的 Android 应用程序能够使用 JSON 数据,但如果我将其重定向到 php (news.php( 文件,我会收到上述异常。

我看过其他可能的重复问题,但它们不太适合我自己的问题。任何帮助将不胜感激。

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

<?php
include("includes/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类"代码片段:

try {
JSONObject mainJson = new JSONObject(result);
JSONArray jsonArray = mainJson.getJSONArray(Constant.CATEGORY_ARRAY_NAME);
JSONObject objJson = null;
for (int i = 0; i < jsonArray.length(); i++) {
objJson = jsonArray.getJSONObject(i);
ItemLatest objItem = new ItemLatest();
objItem.setCId(objJson.getString(Constants.CATEGORY_ITEM_CID));
objItem.setCategoryName(objJson.getString(Constants.CATEGORY_ITEM_NAME));
//objItem.setCategoryImage(objJson.getString(Constants.CATEGORY_ITEM_IMAGE));
objItem.setCatId(objJson.getString(Constants.CATEGORY_ITEM_CAT_ID));
objItem.setNewsImage(objJson.getString(Constants.CATEGORY_ITEM_NEWSIMAGE));
objItem.setNewsHeading(objJson.getString(Constants.CATEGORY_ITEM_NEWSHEADING));
objItem.setNewsDescription(objJson.getString(Constants.CATEGORY_ITEM_NEWSDESCRI));
objItem.setNewsDate(objJson.getString(Constants.CATEGORY_ITEM_NEWSDATE));
arrayOfLatestnews.add(objItem);
}
}
catch (JSONException exc) {
exc.printStackTrace();
}

Android 'Constants class' 代码片段:

public class Constants implements 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":"World","category_image":"91771_world.jpg","status":"1","nid":"9","cat_id":"7","news_heading":"World Sample News Heading","news_description":"
World Sample News 
rn","news_image":"88702_IMG_5038.JPG","news_date":"08-16-2017","news_status":"1"},{"cid":"12","category_name":"IT","category_image":"98162_IMG_1303.JPG","status":"1","nid":"8","cat_id":"12","news_heading":"IT Sample News Heading","news_description":"
IT Sample News 
rn","news_image":"24966_IMG_5018.JPG","news_date":"08-03-2017","news_status":"1"},{"cid":"5","category_name":"Business","category_image":"4591_download.jpg","status":"1","nid":"7","cat_id":"5","news_heading":"Business Sample News Heading","news_description":"
Business Sample News 
rn","news_image":"13015_IMG_5017.JPG","news_date":"08-02-2017","news_status":"1"},{"cid":"4","category_name":"Sports","category_image":"22814_sports.jpg","status":"1","nid":"6","cat_id":"4","news_heading":"Sports Sample News Heading","news_description":"
Sports Sample News
rn","news_image":"72021_IMG_5016.JPG","news_date":"08-01-2017","news_status":"1"}]}

感谢josef.adamcik,我使用Log.d("tag",result(来获取异常日志,它突出显示它确实正在读取以"<!--"开头的php文件。

">

db_connection.php"文件"包含在"新闻中.php文件中有一个以<!--comments -->开头的部分,删除此部分后一切正常。

编辑:

我在 php 中使用了<!--comments-->进行多行注释,而不是/* comments */

因为我使用的是括号 IDE,所以无论如何它都会使<!--comments-->部分变灰,我忽略了它是错误的。

最新更新