2012-06-06 4 views
-2

Мне нужно передать данные из HTML в Service с использованием JSONJS/JQUERY)объект Convert, который содержит другой объект JSON

В службе у меня есть вызов службы, reciving объект, содержащий другой объект и еще 2 поля , объект

Роли:

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 как, что другие службы: (данные, которые содержат только два параметра: идентификатор и имя пользователя)

xmlHttp.open("POST", "http://www.foo.com/serviceFunction2", true); 
xmlHttp.send('{"Id": "123", "userName": "test"}'); 

Итак, мой вопрос, как я могу заполнить Пользователь объект, который содержит Роль объект с использованием JS/JQUERY? как мне удалось отправить его с этой линии:

xmlHttp.send('{"Id": "123", "userName": "test"}'); 

Благодаря

+2

использовать библиотеку JSON, такие как JAXB, GSON, Джексон и т. д. –

+0

@Matt Ball - мне нужно преобразовать его в код 'HTML' ... – choop

+0

Что? Ваш вопрос не имеет смысла. Я предполагаю, что вы имеете в виду «JavaScript», а не «HTML». Что такое «это», которое нужно преобразовать? –

ответ

1

Есть несколько способов «вкладывания» объекты в JS, но для вашей цели, вероятно, самый простой это гнездо вашего объекта и/или массивные литералы. Если «роль» должна быть массив, то что-то вроде этого:

'{"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" } 
    ] 
} 

(Разрывы строк добавлены для удобства чтения, но вы удалите их при создании строки.)

+0

Я дам ему попробовать ... Спасибо – choop

0

Я не знаю, какова ваша цель, но если вы используете HTML-страницу как графический интерфейс и Java для обработки, вы можете использовать или аналогичный. Есть несколько фреймворков, таких как , или , которые обрабатывают много вещей для вас.

Если вы заинтересованы, посмотрите на Primefaces showcase.

Как предложил MattBall, вы также можете использовать что-то вроде , это требует большой нагрузки от ваших рук.

Вы можете использовать множество мощных и простых вещей.

Вы можете отображать объекты в 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; 
} 

Вы можете использовать это в веб-службы:

@GET 
@Produces(MediaType.APPLICATION_JSON) 
@Path("user/{username}") 
public User getUser(@PathParam("username") String userName) 
{ 
    User user; 
    // Get your user 
    return user; 
} 
Смежные вопросы