2014-03-13 68 views
0

我想通過一個JSON請求到我的服務器,在將JSON轉換爲POJO時,控制器遇到錯誤。JSON到POJO轉換錯誤

JSON請求

{ 
    "request":[ 
     {"name":"mac"}, 
     {"name":"rosy"} 
    ] 
} 

我的控制器功能

@RequestMapping(value = "/namelist", 
      method = RequestMethod.POST, 
      consumes = { "application/json" }, 
      produces = {"application/json"}) 
public ... postNameList(@RequestBody NameList names) {} 


Public Class NameList extends ArrayList<Name> {} 
Public Class Name { private name; ...} 

錯誤

消息:「無法讀取JSON:無法反序列化站點 com.abc.xyz.mypackage.NameList在START_OBJECT標記之外[Source: [email protected] {HttpChannelOverHttp @ 1d109942 {r = 1,a = DISPATCHED,uri =/namelist},HttpConnection @ 2cbdcaf6 {FILLING},g = HttpGenerator {s = START},p = HttpParser {s = END,137 of 137}};行:1,column:1]

我不確定代碼出了什麼問題。我對Spring相當陌生,所以任何幫助表示讚賞。

+2

您的JSON是不是一個數組。它是一個單個字段的對象,其值是一個數組。 –

+0

你能提供一個JSON是一個數組的例子嗎? – M10TheMist

+1

刪除JSON中方括號前後的所有內容...... Presto,你只有一個數組(並且你的代碼可以工作) –

回答

0

你的POJO類應該是這樣的:

class Request { 
    private List<Name> request; 

    // getters, setters, toString, ... 
} 

class Name { 
    private String name; 

    // getters, setters, toString, ... 
} 

用法:

@RequestMapping(value = "/namelist", 
      method = RequestMethod.POST, 
      consumes = { "application/json" }, 
      produces = {"application/json"}) 
public ... postNameList(@RequestBody Request request) { ... }