2017-10-19 22 views
-1

私のオブジェクトをサーバーにPOSTするためにSpringとGsonに問題が発生しました。データが入っていても、結果は空です。Spring RESTful WebサービスPOSTオブジェクト

このコードスニペットは、RESTfulなWebサービス上からです:

@RequestMapping("/summe") 
    public @ResponseBody String summe(ArrayList<ServiceSettingsListItem> list) { 
    return "Greeting.summe() = <" + list + ">" + list.size(); 
} 

私のクライアント:

private static Gson gson = new GsonBuilder().create(); 

public static void main(String[] args) throws IOException { 
    String fileContent = new String(Files.readAllBytes(new 
File("demo.json").toPath())); 
    ServiceSettings serviceSettings = gson.fromJson(fileContent, 
ServiceSettings.class); 
    String baseUrl = serviceSettings.getUrl(); 
    RestTemplate restTemplate = new RestTemplate(); 
    String result = restTemplate.postForObject(baseUrl, serviceSettings, String.class); 
    System.out.println(result); 
} 

public static class ServiceSettings { 

    @Override 
    public String toString() { 
     return "ServiceSettings [url=" + url + ", test=" + test + ", items=" 
    + items + "]"; 
    } 

    private String url; 
    private int test; 
    private ArrayList<ServiceSettingsListItem> items = new ArrayList<>(); 

    public String getUrl() { 
     return url; 
    } 

    public void setUrl(String url) { 
     this.url = url; 
    } 

    public int getTest() { 
     return test; 
    } 

    public void setTest(int test) { 
     this.test = test; 
    } 

    public ArrayList<ServiceSettingsListItem> getItems() { 
     return items; 
    } 

    public void setItems(ArrayList<ServiceSettingsListItem> items) { 
     this.items = items; 
    } 

} 

public static class ServiceSettingsListItem { 
    private String name; 
    private int value; 

    public String getName() { 
     return name; 
    } 

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

    public int getValue() { 
     return value; 
    } 

    public void setValue(int value) { 
     this.value = value; 
    } 

} 

}

そして、ここで私のJSONです:

{"url":"http://localhost:8080/summe", 
"test":123, 
"items":[ 
{"name":"name1","value":5}, 
{"name":"name1","value":6} 
] 
} 

私は再取得することを期待結果は0です。

答えて

0

投稿するServiceSettingsオブジェクトの代わりに、itemsの要素を投稿する必要があります。これはコントローラがペイロードをリストにすることを期待しているからです。次の方法を試してください:

関連する問題