Convertir Java Liste de Tableau Javascript
J'ai le code java suivant dans mon application Android et je voulais un moyen de convertir la Java de liste à un tableau qui peut être utilisé en javascript:
Java:
public void onCompleted(List<GraphUser> users, Response response) {
for(int i = 0; i < users.size(); i++)
{
//add to an array object that can be used in Javascript
webView.loadUrl("javascript:fetchFriends(arrObj)");
}
}
Javascript:
//this is how I want to be able to use the object in Javascript
function parseFriends(usersObjectFromJava){
var users = [];
for (var i = 0; i < usersObjectFromJava.length; i++) {
var u = {
Id: usersObjectFromJava[i].id + "",
UserName: usersObjectFromJava[i].username,
FirstName: usersObjectFromJava[i].first_name,
LastName: usersObjectFromJava[i].last_name,
};
users[i] = u;
}
}
Peut m'aider avec le code Java pour créer le usersObjectFromJava de sorte qu'il peut être utilisé en javascript?
- Je peux me tromper car je ne suis pas très bien lire en JS mais je pense que vous pouvez créer un tableau JSON en Java et donc facilement lire en JS? json.org/javadoc/org/json/JSONArray.html
- Votre question n'a pas vraiment d'avoir assez d'informations pour répondre. Comment êtes-vous la communication entre Java et Javascript?
- J'ai mis à jour ma question. Je suis à l'aide d'une webView et en appelant le code javascript comme l'a souligné. La Java/javascript interface a été testé et fonctionne.
- pour ajax oui, si le tableau est chargé à partir du serveur en même temps que la page, il suffit de générer le code pour remplir les tableaux, à ce moment, cependant.
- Je ne vois pas de mise à jour.
- Hmm, n'a probablement pas l'enregistrer. Mis à jour à nouveau, la voyez-vous maintenant?
- Veuillez prendre un coup d'oeil à la Jackson cadre, avec cela, vous pouvez facilement créer ce que vous voulez
- Je le vois. Malheureusement, je ne suis pas familier avec cette approche, je ne peux donc pas vous aider. Personnellement, j'utilise jQuery pour faire un appel ajax et ont le service web Java retourner un objet JSON.
- Pas de probs, merci bien.
- essayez cette stackoverflow.com/questions/16133264/...
InformationsquelleAutor Prabhu | 2014-01-10
Vous devez vous connecter pour publier un commentaire.
Je suppose que cela:
Java:
JavaScript:
Vous aurez à changer la Java-Code un peu (c'est à dire en utilisant les getters ou ajouter plus de/moins d'informations pour la
JSONObjects
.JSON
est inclus dans Android par défaut, donc pas de bibliothèques externes sont nécessaires.J'espère que j'ai compris votre problème.
Petite chose que je suis tombé sur: vous où à l'aide de
fetchFriends
en Java, mais sa appeléparseFriends
en Javascript, j'ai renommé àfetchFriends
Utilisation GSON
pour convertir des objets java à JSON chaîne, vous pouvez le faire par
gson.la méthode toJson(liste) vous donnera
Maintenant, vous pouvez utiliser JSON.parse(), pour désérialiser de JSON Javascript Object.
Vous pouvez utiliser Gson Bibliothèque.
http://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/com/google/gson/Gson.html
Utilisation Jackson.
Vous aurez besoin d'ajouter un "@JsonProperty" annotation de tous les biens de votre Pojo vous souhaitez passer des, de faire quelque chose comme ceci:
Je ne suis pas sûr pourquoi pas de réponse mentionné au sujet de
jaxb
. Je suis juste en pensant àjaxb
serait un bon candidat pour ce type de problèmes...Pour un exemple de style de annoté
jaxb
classe, s'il vous plaît trouver cet.Vous farcir vos données dans ces listes et vous
marshal
soit dansxml
ou unjson
. Après que vous obteniez unjson
pour le client, vous pouvez faire unvar myArray = JSON.parse(response);
...Bien qu'en général, je l'avocat à l'aide de quelque chose comme GSON ou Jackson pour ne JSON conversions pour vous, son assez facile de rouler votre propre si vous êtes dans un environnement limité (comme Android) et ne veulent pas de regrouper un tas de dépendances.
Vous pourrait évidemment faire un
toJSON()
méthode surGraphUser
de mettre de la logique, si vous préférez. Ou utiliser une injection de json bibliothèque d'assistance à la place de méthodes statiques (je voudrais). Ou n'importe quel nombre d'autres abstractions. De nombreux développeurs préfèrent une représentation distincte des objets de modèle dans leur propre objet, moi y compris. Personnellement, je pourrais modèle il quelque chose de ce genre si je voulais éviter les dépendances:interface Marshaller<F,T>
avec des méthodesT marshall(F obj)
etF unmarshall(T obj)
interface JsonMarshaller<F> extends Marshaller<String>
class GraphUserMarshaller implements JsonMarshaller<GraphUser>
class GraphUserCollectionMarshaller implements JsonMarshaller<Collection<GraphUser>>
qui pourrait faire de ce type de vérification ou d'utiliser le modèle visiteur ou quelque chose afin de déterminer la meilleure façon de représenter ce type de collection d'objets.Le long du chemin, je suis sûr que vous trouverez une partie du code à répétition à l'extrait de super - ou composite - classes, en particulier une fois que vous commencez à la modélisation de la collection marshallers de cette façon. Bien que cela peut arriver à être assez détaillé (et fastidieux), il fonctionne particulièrement bien dans les environnements à ressources limitées. où vous souhaitez limiter le nombre de bibliothèques dont vous dépendez.
Vous pouvez utiliser Google Gson bibliothèque (http://code.google.com/p/google-gson/) pour convertir la Liste sur Java Objet JSON. S'assurer que le droit de champs sont définis comme ID, pseudo, nom, Prenom, etc et sur le java script côté de ce même code du travail.
Ses juste un exemple, d'Abord ajouter du code javascript de l'interface. Il sera un pont entre le javascript et le code java.
webView.addJavascriptInterface(nouveau JSInterface(), "interface");
En javascript, vous pouvez l'ajouter comme cela,
L'interface est un mot clé commun entre java et javascript. créer une classe JSInterace et de définir une méthode setPageCount(int a). Le script retourne une valeur, et vous pouvez utiliser cette valeur dans votre méthode java