我需要使用HTML
(Service
}
JSON
传递到JS/JQUERY
在服务中,我有一个服务调用,它返回一个包含另一个对象和另外两个字段的对象。
角色对象:
import java.io.Serializable;
public class Role implements Serializable {
private long id;
private String name;
}
用户对象:
import java.io.Serializable;
public class User implements Serializable {
private String userName;
private String password;
private ArrayList<Role> roles;
}
直到现在我设法将数据传递给JSON
,就像其他服务一样:(仅包含2个参数的数据:id和userName)
xmlHttp.open("POST", "http://www.foo.com/serviceFunction2", true);
xmlHttp.send('{"Id": "123", "userName": "test"}');
所以,我的问题是如何使用JS/JQUERY
填充包含角色对象的用户对象?就像我设法用这条线发送它:
xmlHttp.send('{"Id": "123", "userName": "test"}');
由于
答案 0 :(得分:1)
有几种方法可以在JS中“嵌套”对象,但为了您的目的,最简单的方法是嵌套对象和/或数组文字。如果“roles”应该是一个数组,那么就像这样:
'{"userName":"test", "password":"secret", "roles":["role1","role2","role3"]}'
如果数组中的每个角色本身都是具有属性的对象:
{
"userName":"test",
"password":"secret",
"roles": [
{ "roleName":"role1", "prop2":"someValue", "prop3":"whatever" },
{ "roleName":"role2", "prop2":"someValue", "prop3":"whatever" },
{ "roleName":"role3", "prop2":"someValue", "prop3":"whatever" }
]
}
(为了便于阅读,添加了换行符,但如果创建字符串,则会将其删除。)
答案 1 :(得分:0)
我不知道你的目标是什么,但如果你使用HTML页面作为GUI和Java进行处理,你也可以使用jsf或类似的。有许多框架,例如primefaces,myfaces或icefaces,可以为您处理很多内容。
如果您有兴趣,请查看Primefaces showcase。
正如MattBall建议你也可以使用类似jaxb之类的东西,这会减轻你的负担。
你可以使用很多强大而简单的东西。
您可以使用注释将对象映射到JSON / XML:
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Role
{
@XmlAttribute
private long id;
@XmlAttribute
private String name;
}
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class User
{
@XmlAttribute
private String userName;
@XmlAttribute
private String password;
@XmlElement
private ArrayList<Role> roles;
}
然后,您可以在Web服务中使用它:
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("user/{username}")
public User getUser( @PathParam("username") String userName)
{
User user;
// Get your user
return user;
}