Analyser un paramètre de chaîne de requête pour objet java
J'ai de la chaîne de requête comme ça:
ObjectGUId=1abcde&ObjectType=2&ObjectTitle=maximumoflife&Content=racroi&TimeStamp=2012-11-05T17:20:06.056
Et que je dispose de Java Objet:
LogObject{
private String ObjectGUId;
private String ObjectType;
private String ObjectTitle;
private String Content;
private String TimeStamp;
}
Je tiens donc à analyser cette chaîne de requête à cet Objet java.
J'ai cherché et lu beaucoup de question, mais pas eu de réponse correcte encore.
Me montrer ce qu'il peut résoudre ce problème.
- ... "Montrez-moi ce que peut résoudre ce problème." Wow, très autoritaire. Qu'avez-vous essayé jusqu'à présent?
- En outre, c'est que l'intégralité de
LogObject
? Si oui, les valeurs qu'il sera plutôt difficile...
Vous devez vous connecter pour publier un commentaire.
Étiquette
Vous devriez vraiment être beaucoup plus précis sur ce que vous avez essayé, et pourquoi il ne fonctionne pas.
Un bon exemple de code de votre
LogObject
serait vraiment très utile ici.Idéalement, vous devez donner un SSCCE autres afin de pouvoir facilement tester votre problème eux-mêmes.
Réponse
Vous pouvez extraire le nom de paires de valeur:comme ceci:
J'ai choisi de les mettre dans une table de hachage, mais vous pourriez tout aussi bien regarder le nom de la partie (
kv[0]
), et choisir de faire quelque chose avec elle. Par exemple:Cependant, tous les champs de
LogObject
sont privés et que vous n'avez pas de nous montrer toutes les méthodes, donc j'espère que vous avez un moyen de réglage de l'extérieur... garder à l'esprit que vous aurez besoin pour stocker les paires dans une structure de données de quelque sorte (comme je l'ai fait avec unHashMap
) si vous avez l'intention d'initialiser unLogObject
avec tous les champs plutôt que de définir les champs, après un appel de constructeur.Parlant de SSCCEs, J'en ai fait une pour cette réponse.
private static String urlDecode (String s) { try { return URLDecoder.decode(s, "UTF-8"); } catch (UnsupportedEncodingException e) { throw new RuntimeException("Error in urlDecode.", e); } }
Si vous n'avez pas vraiment besoin de pousser la chaîne de requête dans votre propre classe (vous voulez peut être que si), au lieu d'analyser manuellement, vous pouvez utiliser le URLDecoder, comme @Sonrobby a commenté:
De mannequin a l'air sale, mais il est nécessaire si ce que vous n'avez est la querystring valeurs (qString). Si vous avez l'URL complète de la page, il suffit de passer directement à la URLDecoder, et vous avez terminé.
getQueryParameterNames()
peut-être dans Android, mais pas en Java.Inspiré par @bruno.braga, voici un moyen à l'aide d'Apache http-composants. - Vous tirer parti de l'analyse des cas limites:
Qui va vous donner une Liste de NameValuePair les objets qui devraient être faciles à travailler avec.