创建JSON集合使用JSONArray.fromObject 转化后得到的jsonArray集为空?

个人经历教训,答案在末尾最

近况说明:最近在写一个论坛系统的后台,其中涉及到文章类(article)与评论类(article_comment)的关系,我在article类中创建了一个获取文章评论的function【该方法获取文章所有评论,组成JsonArray集合后再转化为String格式返回】:

public String getArticalComments() {
		//获取文章评论集合
		List article_comments= new ArrayList();		
		try {	
			ResultSet res =  DoSQL.executeQuery("SELECT *FROM article_comment WHERE artical_id = " + this.article_id);//通过文章id寻找评论
			while (res.next()) {
				System.out.println("获取评论id:"+res.getInt("id"));
				artical_comment A = new artical_comment(res.getInt("id"));//通过文章id寻找到评论id,并创建评论类
				//System.out.println(A.toString());
				artical_comments.add(A);//将评论添加到对象数组
			}
			System.out.println(article_comments);
		} catch (SQLException e) {
			// TODO 自动生成的 catch 块
			System.out.println("获取res查询结果集失败");
			e.printStackTrace();
		}
		//创建JSON集合
        JSONArray jsonarray = JSONArray.fromObject(artical_comments);
        System.out.println("转换jsonarray后:"+jsonarray);
        //把JSON集合转出String字符串输出
        String str = jsonarray.toString();
        System.out.println("转换str后:"+str);
        return str;//str代表转化成String格式后的某文章评论集合
	}

起初发现控制台打印出来的str为{} 即 空,通过调试发现,JSONArray jsonarray = JSONArray.fromObject(article_comments);这一步得到的jsonarray也为空,但是List article_comments= new ArrayList();artical_comments这个集合的内容不为空。
这就说明,问题发生在JSONArray jsonarray = JSONArray.fromObject(article_comments);这一行代码上面了,也就是list对象集合转json格式造成异常,一番搜索,得出结果【划重点】:

答案:
SONArray.fromObject(object)在对Object转换的时候是按照domain类中的所有getXXX()方法进行转换的。如果你在类中写了非属性的getXXX()方法,那么返回给你的就会有XXX属性了,如果在object中没有写get方法,那么转化为jsonArray的时候是获取不到值的。

你可能感兴趣的:(java学习)