Json 避免删除子对象

Json 避免删除子对象,json,spring,hibernate,Json,Spring,Hibernate,我正在用Hibernate框架编写一个Spring应用程序 在我的应用程序中,有一个JSON调用。在这种情况下,JSON响应返回如下所示的对象层次结构: 反对 供应批次 农夫 该农民具有ID、姓名、地址和联系人等属性 数组列表的第一个对象返回所有属性,子对象填充相关数据。但问题是,农民位于第二个或第三个或任何其他供应批次中,该农民将作为供应批次中名为“农民”的属性返回,其值为农民ID 但当我在控制器中循环该对象时,它会打印出所有农民的名字。我搞不懂这是什么行为。以下是示例对象的屏幕截

我正在用Hibernate框架编写一个Spring应用程序

在我的应用程序中,有一个JSON调用。在这种情况下,JSON响应返回如下所示的对象层次结构:

  • 反对
    • 供应批次
      • 农夫
该农民具有ID、姓名、地址和联系人等属性

数组列表的第一个对象返回所有属性,子对象填充相关数据。但问题是,农民位于第二个或第三个或任何其他供应批次中,该农民将作为供应批次中名为“农民”的属性返回,其值为农民ID

但当我在控制器中循环该对象时,它会打印出所有农民的名字。我搞不懂这是什么行为。以下是示例对象的屏幕截图

这是控制器中的json响应

@RequestMapping(value = {"admin/getTaskByDate","user/getTaskByDate"}, method = RequestMethod.GET)
public @ResponseBody List<Task> getTaskByDate(@RequestParam("date") String date) {


    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    Date dat = null;
    try {
        dat = sdf.parse(date);
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    List<Task> tasksByDate = taskService.getFeedIssueTasksByDate(dat);

    for(Task t : tasksByDate)
    {
        System.out.println("Farmers-"+t.getSupplyBatch().getFarmer().getName());
    }



    return tasksByDate;

}
@RequestMapping(值={“admin/getTaskByDate”,“user/getTaskByDate”},方法=RequestMethod.GET)
public@responseBy列表getTaskByDate(@RequestParam(“日期”)字符串日期){
SimpleDataFormat sdf=新SimpleDataFormat(“yyyy-MM-dd”);
Date dat=空;
试一试{
dat=sdf.parse(日期);
}捕获(解析异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
List tasksByDate=taskService.getFeedIssueTasksByDate(dat);
for(任务t:tasksByDate)
{
System.out.println(“Farmers-”+t.getSupplyBatch().getFarmer().getName());
}
返回任务日期;
}
下面是jsp页面中调用此json响应的代码

<script>
function getTaskById(){
var date = $('#inputDate').val();

$("#tblTask").find("tr:gt(0)").remove();

var sid = this.value;
$.ajax({
            url : 'http://localhost:8080/jp/user/getTaskByDate.json?date='+date+'',
            success : function(data) {
                console.log(data);

                for(var i = 0; i < data.length; i++) {
                    var obj = data[i];

                    var act;



                    var dt = new Date(obj.duedate);

                    if(obj.type == "Feed Issuing")
                        {
                            act='<td><a href="./addBatchFeed.html?tid='+obj.taskId+'&bid='+obj.supplyBatch.supplyBatchId+'" class="btn btn-primary">Issue Feed</a></td>'
                        }
                    else
                        {
                        act='<td><a href="./addCatching.html?tid='+obj.taskId+'&bid='+obj.batch+'" class="btn btn-primary">Catch</a></td>';
                        }

                    $('#tblTask tr:last').after('<tr><td>'+obj.taskId+'</td><td>'+dt+'</td><td>'+obj.status+
                            '</td><td>'+obj.supplyBatch.supplyBatchId+'</td><td>'+obj.supplyBatch.farmer.name+'</td><td>'+obj.feedType+'</td><td>'+obj.quantity+'</td>'+act+'</tr>');
                }

            }

        });
return false;

}

函数getTaskById(){
变量日期=$('#inputDate').val();
$(“#tblTask”).find(“tr:gt(0)”).remove();
var sid=此值;
$.ajax({
网址:'http://localhost:8080/jp/user/getTaskByDate.json?date=“+日期+”,
成功:功能(数据){
控制台日志(数据);
对于(变量i=0;i
请发布您不想打印的代码。您好,我在控制器和jsp页面中添加了代码,谢谢。如果您问为什么要在控制器中打印农民姓名,那是因为您有一个系统打印输出语句,除非我遗漏了什么!!是的,我知道。我的问题是为什么该对象已从json响应中删除?如果您参考屏幕截图,您可以看到它。请在控制器中打印Json响应,看看是否正确