我想知道如果在使用输入参数时休息api可以执行以下操作:
假设我的json对象具有以下参数:
string name;
string adress;
hashmap<string,object> content;
这是一个可以发送的例子:
{
"name": "AZ",
"adress": "US",
"content": {
"clients": [
{
"client_ref":"213",
"commands" : {
"subCommands": [
{
"num":"1",
"price":"10euro"
},
{
"num":"12,
"price":"10euro"
}
]
}
},
{
"client_ref":"213",
"commands" : {
"subCommands": [
{
"num":"1",
"price":"10euro"
},
{
"num":"12,
"price":"10euro"
}
]
}
}
]
}
}
问题是可以继续构建hashmap,其中对象本身可以有n个hashmap类型的子...?
(我使用球衣作为休息实施)
答案 0 :(得分:0)
content
是一个对象,而不是地图。
"content": {
"clients": [
{
"client_ref":"213",
"commands" : {
"subCommands": [
{
"num":"1",
"price":"10euro"
},
{
"num":"12,
"price":"10euro"
}
]
}
},
{
"client_ref":"213",
"commands" : {
"subCommands": [
{
"num":"1",
"price":"10euro"
},
{
"num":"12,
"price":"10euro"
}
]
}
}
]
}
这是Java Object演示文稿。
public class Content {
private List<Client> clients;
//Getters and setters
}
public class Client {
private String clientRef;
private List<Command> commands;
//Getters and setters
}
//And so on, define other classes.
要回答您的问题,是的,您可以构建地图。 请检查这个例子。它告诉你如何解析一个未知的json(如果你不知道你的json对象的确切结构)。 https://stackoverflow.com/a/44331104/4587961
然后您可以使用字段构建地图
Map<String, Object>
此地图的某些值将是嵌套地图。
答案 1 :(得分:0)
您可以使用 javax.ws.rs.core.GenericEntity 来包装具有泛型类型的集合(您的HashMap)。
@GET
@Path("/mapping")
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public Response getAllMapContents() {
Map<String,Object> map = new HashMap<String,Object>();
map.put("Hello", "World");
map.put("employee", new Employee(1,"nomad"));
GenericEntity<Map<String,Object>> entity = new GenericEntity<Map<String,Object>>(map) {};
return Response.ok(entity).build();
}
我查了一下,发现它正常工作请在下面找到答案。谢谢。
{
"Hello": "World",
"employee": {
"id": 1,
"name": "nomad"
}
}
答案 2 :(得分:0)
假设您有一个JSON提供程序,例如Jackson注册,您的模型类看起来像:
public class Foo {
private String name;
private String address;
private Map<String, Object> content;
// Getters and setters
}
以下资源方法:
@Path("foo")
public class Test {
@POST
@Consumes(MediaType.APPLICATION_JSON)
public Response post(Foo foo) {
...
}
}
可以处理如下请求:
POST /api/foo HTTP/1.1
Host: example.org
Content-Type: application/json
{
"name": "AZ",
"adress": "US",
"content": {
"clients": [
{
"client_ref": "213",
"commands": {
"subCommands": [...]
}
},
{
"client_ref": "213",
"commands": {
"subCommands": [...]
}
}
]
}
}