Android から Spring Java サーバーに JSONArray を渡そうとしています。
私はすでに2つの方法を試しました。1 つは、JSONArray を String として渡し、@PathVariable アノテーションでキャッチすることです。
この方法で [{"id":6,"numDishes":1,"observations":"false"},{"id":2,"numDishes":3,"observations":"false"}] を取得できますそして、私はそれをこのように機能させることができると思います。
これに使用するコードは次のとおりです。
アンドロイドで
HttpGet request = new HttpGet(serverURL + action);//action already has two params
HttpResponse response = httpclient.execute(target, request);
サーバーに到着 /orderService/addOrder/1/[{"id":6,"numDishes":1,"observations":"false"},{"id":2,"numDishes":3,"observations": "間違い"}]
@RequestMapping(method=RequestMethod.GET, value="/addOrder/{tableNumber}/{jsonParam}")
public void addOrder(@PathVariable Integer tableNumber, @PathVariable String jsonParam) {
log.info("String encoded: " + jsonParam);
}
とにかく、私は直接それをしたいと思います。何かのようなもの
アンドロイド
HttpPost request = new HttpPost(serverURL + action + URLEncoder.encode(paramsString, "UTF-8"));
request.setHeader("Accept", "application/json");
request.setHeader("Content-type", "application/json");
HttpResponse response = httpclient.execute(target, request);
サーバ
public class OrderPojo extends ArrayList<DishPojo>{}
@RequestMapping(method=RequestMethod.POST, value="/addOrderPost/{tableNumber}/{jsonParam}")
public void addOrderPost(@PathVariable Integer tableNumber, @RequestBody OrderPojo jsonParam) {
log.info("addOrderPost OrderPojo: " + jsonParam);
}
また、それが問題の一部である可能性があると思うので、Spring-Servlet 内にこれがあります。
<bean id="jacksonMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/>
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="jacksonMessageConverter"/>
</list>
</property>
</bean>
<mvc:annotation-driven/>
私は正しい道にいますか?オブジェクトをサーバー内のカスタム オブジェクトに直接解析するにはどうすればよいですか?