Sonderzeichen bei JSON-(Simple)-Versand

Abacuss

Grünschnabel
Hallo zusammen,

ich benutze folgendes:
Eclipse EE
Tomcat 7
json-simple-1.1.1.jar

und bin der Anleitung von http://www.tutorialspoint.com/json/json_java_example.htm gefolgt.

Java:
String json_encoding(){
     JSONObject obj = new JSONObject();

    obj.put("name","foo");
    obj.put("num",new Integer(100));
    obj.put("balance",new Double(1000.21));
    obj.put("is_vip",new Boolean(true));

    StringWriter out = new StringWriter();
    try {
       obj.writeJSONString(out);
     } catch (IOException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
     }
     
    String jsonText = out.toString();
    return jsonText;
    //System.out.print(jsonText);
   }
Java:
public String sendCall(String url) throws Exception{
     url="http://localhost:8080/REST_JSON_API/JSON_TEST";
     url=url+"?json="+json_encoding();
     
     StringBuffer stBuf=new StringBuffer();
       HttpClient httpclient = new DefaultHttpClient();
       HttpGet httpget = new HttpGet(url);
       httpclient.execute(httpget);
       .
       .
       .     
   }


Das klappt alles wie beschrieben. Die encodingmethode liefert den String im System.out. und die sendCall würde auch einen String senden.
Aber wenn ich vom Client aus den encodeten String versenden will erhalte ich die Fehlermeldung:
Java:
IllegalArgumentException: Illegal character in query at index 51: http://localhost:8080/REST_JSON_API/JSON_TEST?json={"balance":1000.21,"is_vip":true,"num":100,"name":"foo"}
Ok, das liegt wohl an den Anführungszeichen (").
Muss ich nun erst alle " maskieren und welche Zeichen noch? Was mach ich wenn im Text (zB: in name) zu maskierende Zeichen auftauchen?
Oder hänge ich iwie das JSONObject an?

Wäre schön wenn hier jemand bescheid weis.

Beste Grüße
Abacuss
 

ComFreek

Mod | @comfreek
Moderator
Hallo Abacuss,

Probier mal den URLEncoder:

Java:
url = "http://localhost:8080/REST_JSON_API/JSON_TEST";
url += "?json="+URLEncoder.encode(json_encoding(), "UTF-8");
(In welchem Encoding gibt denn writeJSONString seine Daten zurück?)