我需要使用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"}