我如何处理Jersey API中ajax请求的JSON数据

时间:2014-03-07 13:13:21

标签: ajax jersey

我在下面有这个ajax请求:

var data = {
   id: 5,
   name: 'Bilbo Baggins',
   age: '27'
};

$.post('/editHim', data, function(returnedData) {
   followTheDragonWithTheRing(returnedData);
});

我正在尝试使用Jersey API处理'数据'。我在文档中寻找响应,我看到的是从路径或查询字符串中提取数据的方法。

更新1:显示完整数据

var data = {
   id: 5,
   name: 'Bilbo Baggins',
   age: '27',
   // This data below must be persisted in another table that has a relationship of n .. n because another Hobbits can live in those addresses.
   streetaddress1: 'The Shire',
   stnumber1: '112',
   streetaddress2: 'Valfenda',
   stnumber2: '42'
};

$.post('/editHim', data, function(returnedData) {
   followTheDragonWithTheRing(returnedData);
});

2 个答案:

答案 0 :(得分:1)

通常您创建一个为数据结构建模的Data类

public class Data {
  String id;
  String name;
  String age;

  // getters/setters
}

然后您可以在输入法

中收到它
@POST
@Consumes("application/json")
@Produces("text/plain")
public String editHim(Data data) {
  return "data[" + data.getId() + ',' + data.getName() + ',' + data.getAge() + ']';
}

您可以使用方法的返回值以相同的模式生成JSON。

<强>更新

考虑到地址问题,我认为数据结构更清晰

var data = {
   id: 5,
   name: 'Bilbo Baggins',
   age: '27',
   // This data below must be persisted in another table that has a relationship of n .. n because another Hobbits can live in those addresses.
   addresses: [{
       streetaddress: 'The Shire',
       stnumber: '112'
     },{
       streetaddress: 'Valfenda',
       stnumber: '42'
     }
  ]
};

服务器端的相应实体:

@Entity
public class Data {
  @Id
  String id;
  String name;
  String age;
  @ManyToMany
  List<Address> addresses = new ArrayList<>();

  // getters/setters
}

@Entity
public class Address {
  String streetaddress;
  String stnumber;

  // getters/setters
}

答案 1 :(得分:0)

如果返回的字符串是json字符串格式,则可以使用eval函数示例:

returnedData = eval('('+returnedData+')');

因此,如果返回数据的值类似于['id':1,'test':2],那么它将被转换为一个对象,允许您像这样访问它:

alert(returnedData['id']);