我需要使用HttpClient做一个POST json字符串。以下将是我的代码。 Json从另一端映射到一个对象。

HttpClient client = HttpClientBuilder.create().build();
HttpPost post = new HttpPost(url);
String jsonData = "{ \"provider\" : null , \"password\" : \"a\", \"userid\" : \"mlpdemo\\mlpdemoins\" }";
post.setEntity(new ByteArrayEntity(         jsonData.toString().getBytes("UTF8")));
HttpResponse response = client.execute(post);

在这里,所有其他正确映射的对象都需要userId。这里的问题是反斜杠( mlpdemo\mlpdemins )。我猜。如果我发送一个字符串作为用户ID,它将被映射而没有任何问题。
例如:-
String jsonData = "{ \"provider\" : null , \"password\" : \"a\", \"userid\" : \"mlpdemoins\" }";

这有效。

但是我需要通过POSt发送( mlpdemo\mlpdemins )。请帮帮我。
String jsonData = "{ \"provider\" : null , \"password\" : \"a\", \"userid\" : \"mlpdemo\\mlpdemoins\" }";

这是我得到的异常(exception)。
com.fasterxml.jackson.core.JsonParseException: Unrecognized character escape 'm' (code 109)
 at [Source: java.io.InputStreamReader@29f0a0a2; line: 1, column: 62]
BadRequestException (0ea35150-f33a-4932-a31e-8a1048af53ad): 400 Bad Request, com.strategicgains.restexpress.serialization.DeserializationException: com.fasterxml.jackson.core.JsonParseException: Unrecognized character escape 'm' (code 109)
 at [Source: java.io.InputStreamReader@29f0a0a2; line: 1, column: 62]
    at com.strategicgains.restexpress.Request.getBodyAs(Request.java:165)
    at com.strategicgains.restexpress.Request.getBodyAs(Request.java:181)

最佳答案

mlpdemo\mlpdemoins是无效的字符串,您不能在JSON中使用它。但是您可以轻松使用mlpdemo\\mlpdemoins

下面的代码对我来说很好:

String jsonData = "{ \"provider\" : null , \"password\" : \"a\", \"userid\" : \"mlpdemo\\\\mlpdemoins\" }";

ObjectMapper mapper=new ObjectMapper();

System.out.println(mapper.readTree(jsonData));

它将产生以下输出JSON:
{"provider":null,"password":"a","userid":"mlpdemo\\mlpdemoins"}

09-06 08:34