2015-10-12 146 views
1

我有以下的春天@RestController方法添加附加屬性的ResponseBody對象

@RequestMapping(value = "/getPeople", method = RequestMethod.GET) 
public List<Person> getPeople(Model model){ 
    List<People> people = personRepo.getAllPeople(); 
    model.addAttribute("people", people); 
    return people; 
} 

它返回下面的響應體

[ 
    {"name":"Jim","group":1}, 
    {"name":"Dwight","group":2}, 
    {"name":"Stanley","group":3} 
] 

我可以修改此方法(通過@Controller方法本身,或者通過AJAX請求)包含people陣列內部或外部的其他屬性,並且不需要修改Person對象 - 以便返回的對象可能看起來像是某種東西È

{ 
    "people":[ 
     {"name":"Jim","group":1, "independentAttribute": "A"}, 
     {"name":"Dwight","group":2, "independentAttribute": "B"}, 
     {"name":"Stanley","group":3, "independentAttribute": "C"} 
    ], 
    "extraAttributes":[ 
     {"attribute1": 1,"attribute2": 2,"attribute3":3} 
    ] 
} 

道歉,如果這不是有效的對象/數組語法,lackadaisically扔在一起。

+1

_lackadaisically_ Fancy word。 –

+0

@SotiriosDelimanolis我正在使用FasterXML的JSON處理器 –

+0

我的錯誤,它是一個'@ RestController',它將數組返回給響應體 - 更新了我的問題。這有幫助嗎? –

回答

2

您可以修改對象的JSON請求的回調。我不熟悉d3_json,但你可以做類似

callback : function(data){ 
    //data is the returned List<Person> serialized to JSON 
    var modifiedObj = new Object(); 
    modifiedObj.persons = data; 
    modifiedObj.extraAttributes = [{"attribute1": 1,"attribute2": 2,"attribute3":3}] 
} 
+0

正是我正在尋找。謝謝 –

0

我認爲你正在尋找一個自定義的JSON序列,看到這個鏈接: http://www.baeldung.com/jackson-custom-serialization

+0

對不起,我不明白你爲什麼會這樣做,我誤解了什麼?我以爲你想添加自定義json字符串到已經序列化的json(人員列表)?我對嗎? –

+0

我沒有downvote你m8。我發現答案有幫助,儘管我發現@onepotato有我正在尋找的 –

+0

他們將如何使用此JSON序列化程序? –