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

如何在java中显示json对象值中的反斜杠-非法转义JSONException,java,json,Java,Json,如何在java中以json值显示反斜杠。我得到一个org.json.JSONException:非法越狱。在9处使用下面的示例代码。 我使用的是json 1.0.0jar-org.json String s1 = "{'Hi':'\\ksdfdsfsdfdfg'}"; int i = (int) '/'; System.out.println(s1); try { JSONObject json = new JSONObject(s1);

如何在java中以json值显示反斜杠。我得到一个org.json.JSONException:非法越狱。在9处使用下面的示例代码。 我使用的是json 1.0.0jar-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();
    }

我认为,您使用了错误的引号,在JSON中使用了双引号:

String s1 = "{\"Hi\":\"\\ksdfdsfsdfdfg\"}"

这应该行。

需要两个反斜杠才能在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();
}
它打印:

\KSDFDSFSDFG


您必须添加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();
}

加倍,所以\\\\Yes,因为您只对java转义了斜杠,所以要对json也转义斜杠,请尝试使用四个斜杠:
“{\“Hi\”:\“\\\\ksdfdsfsdfg\”}”
是的,但如果我使用4,我得到2个反斜杠,我只需要1个?{“Hi”:“\\KSDFDSFSDFG”}-sysout(字符串)---{“Hi”:“\\KSDFDSFSG”}-sysout(json)如果从映射中检索值,则只会看到1个反斜杠<代码>字符串s=(字符串)json.get(“Hi”)将给出一个带有2个反斜杠的输出。我只需要1个字符。@ThusharPSujir否,这将给出一个带有1个反斜杠的输出。