如何在Java中的json值中显示反斜杠。我收到org.json.JSONException:非法转义。在9处加上以下示例代码。 我正在使用json 1.0.0 jar-org.json
String s1 = "{'Hi':'\\ksdfdsfsdfdfg'}";
int i = (int) '/';
System.out.println(s1);
try
{
JSONObject json = new JSONObject(s1);
}
catch (JSONException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
答案 0 :(得分:1)
您需要两个反斜杠才能在Java字符串文字"\\"
中产生一个反斜杠,并且您需要将反斜杠加倍以在JSON字符串中获得一个反斜杠(因为JavaScript与反斜杠转义和字符串文字相似的规则与Java),因此您需要四个反斜杠:
String s1 = "{'Hi':'\\\\ksdfdsfsdfdfg'}";
如果您这样做:
String s1 = "{'Hi':'\\\\ksdfdsfsdfdfg'}";
try {
JSONObject json = new JSONObject(s1);
System.out.println(json.get("Hi"));
} catch (JSONException e) {
e.printStackTrace();
}
它打印:
\ ksdfdsfsdfdfg
答案 1 :(得分:0)
我认为,您在JSON中使用了错误的引号,在双引号中使用了
String s1 = "{\"Hi\":\"\\ksdfdsfsdfdfg\"}"
应该可以。
答案 2 :(得分:0)
您必须添加4个反斜杠才能起作用。如果仅打印已解析的json对象值,则将看到2个反斜杠。但是,如果您从JSONObject
获取值,则只会看到一个。
String s1 = "{'Hi':'\\\\ksdfdsfsdfdfg'}";
int i = (int) '/';
System.out.println(s1);
try {
JSONObject json = new JSONObject(s1);
System.out.println(json);//this will print two backslashes
String s = (String) json.get("Hi");
System.out.println(s);//this will print only one
} catch (JSONException e) {
e.printStackTrace();
}