避免JSON删除子对象

时间:2016-04-17 06:00:40

标签: json spring hibernate

我正在使用Hibernate框架编写Spring应用程序。

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

  • 对象
    • SupplyBatch

这位农民拥有身份证,姓名,地址和联系方式等属性。

数组列表的第一个对象返回所有属性,子对象用相关数据填充。但问题是,农民处于第二或第三,或者在任何其他供应批次中,农民作为供应批次中的一个属性返回,称为农民"具有农民身份证的价值。

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

First object with all the child objects

Second object with farmer's ID without farmer object

这是我控制器中的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;

}

以下是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;

}

0 个答案:

没有答案