Javax / Jersey服务Post -消费Json数组



我写了一个Javax/Jersey Service。我有问题与我的@POST方法消费在Json中解析的数组列表。我无法想象为什么这行不通。什么都没发生。没有错误-什么都没有。如果我对单个对象做同样的操作,效果很好。

关于我的设置的更多信息:

jsersey-bundle-1.9.jar
asm-3.1.jar
jsr311-api-1.1.jar
set up the server with jesersy's httpserver

首先是我的应用程序做post:

HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(params[0]);
String json = "";
Ding obj1 = new Ding("Sebastian", 3456, 93);
Ding obj2 = new Ding("adsasd", 12, 1);
List<Ding> list = new ArrayList<Ding>();
list.add(obj1);
list.add(obj2);
Gson gson = new Gson();
json = gson.toJson(list);
Log.d("", json);
StringEntity se = new StringEntity(json);
httpPost.setEntity(se);
httpPost.setHeader("Accept", "application/json");
httpPost.setHeader("Content-type", "application/json");
HttpResponse httpResponse = httpClient.execute(httpPost);
inputStream = httpResponse.getEntity().getContent();
result = read(inputStream);

json字符串看起来像:

[{"name":"Sebastian","grosse":93,"gewicht":3456},{"name":"adsasd","grosse":1,"gewicht":12}]

POST-Method接收数组:如果我用Ding ding代替List<Ding> ding1,一切正常。但是对于数组列表,什么都不会发生。即使没有错误。

  @POST
  @Path( "putArray")
  @Consumes( MediaType.APPLICATION_JSON )
  @Produces( MediaType.APPLICATION_JSON )
  public List<Ding> putDingArray( List<Ding> ding1){
      System.out.println("Los gehts: ");
      for(int i = 0; i < ding1.size(); i++){
          System.out.println(ding1.get(i).getName());
          System.out.println(ding1.get(i).getGewicht());
          System.out.println(ding1.get(i).getGrosse());
      }  
      return ding1;
  }

类Ding,不包括填充的构造函数和getter/setter

@XmlRootElement
public class Ding {

    private int gewicht;
    private int grosse;
    private String name;
    public Ding(){
    }......

额外的问题:

POST是正确的方式吗?也许把?传输数组列表不常见吗?我在谷歌上找不到有用的东西…谢谢你的帮助;)

我还没有解决方案,但是一个很好的变通方法。

你可以创建一个新的对象来保存数组列表,而不是发送一个数组列表…

public class DingHolder{
    private ArrayList<Ding> list = new ArrayList<Ding>();
    ... //getter setter constructor

然后你可以插入任意多的数组列表,甚至给这个消息一些属性…

最新更新