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

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

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

public String getArticalComments() {
		//获取文章评论集合
		List<artical_comment> article_comments= new ArrayList<article_comment>();		
		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_comment> article_comments= new ArrayList<article_comment>();artical_comments这个集合的内容不为空。
这就说明,问题发生在JSONArray jsonarray = JSONArray.fromObject(article_comments);这一行代码上面了,也就是list对象集合转json格式造成异常,一番搜索,得出结果【划重点】:

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

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值