如何在Java中的JSON对象值中显示反斜杠-非法转义JSONException

时间:2018-06-28 07:09:01

标签: java json

如何在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();
    }

3 个答案:

答案 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();
}