2013-05-14 26 views
0

我已經成功地在發送一個簡單的JSON對象到Spring框架控制器400錯誤的請求時發佈JSON陣列來一個Spring控制器

curl -v -H "Content-Type: application/json" -H "Accept: application/json" -d '{"lastName":"Smith","firstName":"John"}' http://localhost:8080/WebServices02/aura/testJsonArray 

然而,當我送了一個JSON對象有嵌入式陣列

curl -v -H "Content-Type: application/json" -H "Accept: application/json" -d '{"lastName":"Smith","pals":[{"name":"Billy"}],"firstName":"John"}' http://localhost:8080/WebServices02/aura/testJsonArray 

我得到錯誤400'客戶端發送的請求在語法上不正確()。

我的控制器是

@Controller 
@RequestMapping(value="/aura") 
public class AuraController { 

@RequestMapping(value = "/testJsonArray", method = RequestMethod.POST, headers = {"content-type=application/json"}) 
@ResponseBody 
public void testJsonArray(@RequestBody Aura aura){ 
    System.err.println("Called testJsonArray(): " + "Aura is " + aura.toString()); 
} 

}

我的光環類被定義爲

import java.io.Serializable; 
import java.util.List; 
import org.json.JSONObject; 

public class Aura implements Serializable { 

public class Pal{ 
    private String name; 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

} 


private String firstName; 

private String lastName; 

public String getFirstName() { 
    return firstName; 
} 

public void setFirstName(String firstName) { 
    this.firstName = firstName; 
} 

public String getLastName() { 
    return lastName; 
} 

public void setLastName(String lastName) { 
    this.lastName = lastName; 
} 

private List<Pal> pals; 

public String toString(){ 
    return new JSONObject(this).toString(); 

} 

public List<Pal> getPals() { 
    return pals; 
} 

public void setPals(List<Pal> pals) { 
    this.pals = pals; 
} 

}

我的豆(下MVC:消息轉換器)是

<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/> 

如果有人能幫助我在這...感謝

+0

杜......愚蠢的錯誤。帕爾不應該是一個內心階層。問題解決了 – 2013-05-14 03:04:25

回答

1

你必須包括對項目中的傑克遜核心-ASL和傑克遜映射器 - 翔升傑克遜JSON映射依賴。

這對於使用java pojo類字段映射json是必需的。

+0

(我剛剛發佈後才明白這一點),原因(對於嵌入式數組而言,不能在簡單的JSON數組中工作)的原因是Pal是內部類。一旦我把它作爲一個單獨的課程,它一切正常......感謝您嘗試提供幫助 – 2013-05-15 02:12:03

相關問題