2013-01-19 5 views
0

Je suis en train d'envoyer les paramètres suivants à un serveur via HTTP POST:Java Regex ne fonctionne pas?

["my_session_id","{this=that, foo=bar}"] 

Mais le serveur renvoie une erreur d'analyse en raison des guillemets autour du hachage.

Je suis en train de les enlever avec un regex comme ceci:

params.replaceAll("\\\"\\{", "\\{"); 
params.replaceAll("\\\"\\}", "\\}"); 

Dans tout ce que je n'ai honnêtement aucune idée de ce que je fais. S'il vous plaît aider.

Merci d'avance!

+1

envoyer valeur JSONObject parce que vous obtiendrez des valeurs de jsonobect côté service facile sans utiliser remplacer ou fonctions séparées –

Répondre

2

Il y a deux problèmes ici: d'abord, vous ne réattribuez pas la chaîne. Strings are immutable in Java (ne peut pas être modifié), vous devez donc affecter le résultat. Deuxièmement, vous remplacez "} au lieu de }".

Voici ce que je:

String params = "[\"my_session_id\",\"{this=that, foo=bar}\"]"; 
params = params.replaceAll("\\\"\\{", "\\{"); 
params = params.replaceAll("\\}\\\"", "\\}"); 
System.out.println(params); 

qui imprime:

["my_session_id",{this=that, foo=bar}]

PS: Un peu des conseils, utilisez JSON. Android a excellent JSON handling et supported in PHP as well.

+0

sont la '/' 's dans 'params' créé par' toString () '? – 1vasari

+0

@TheVasari Ceux qui sont là pour échapper les '' '' s quand j'ai créé la chaîne Dans mon code, 'params' est initialement égal à' ["my_session_id", "{this = that, foo = bar}"] ', – Eric

+0

Fonctionne parfaitement - merci beaucoup! – 1vasari

0

Y a-t-il une raison pour laquelle vous utilisez l'expression régulière replaceAll? Sinon, vous pouvez essayer:

String parameters = parameters.replace("{", "\\{").replace("}", "\\}");