SpringMVC Ajax JSON параметр закодирован, не работает с javax.json.JsonReader
У меня есть вызов Ajax, который идет в мое приложение SpringMVC. Там я хочу проанализировать параметр JSON, используя javax.json
API.
Ошибка синтаксического анализа (неверный символ):
javax.json.stream.JsonParsingException: Unexpected char 37 at (line no=1, column no=1, offset=0)
at org.glassfish.json.JsonTokenizer.unexpectedChar(JsonTokenizer.java:532)
at org.glassfish.json.JsonTokenizer.nextToken(JsonTokenizer.java:415)
at org.glassfish.json.JsonParserImpl$NoneContext.getNextEvent(JsonParserImpl.java:222)
Строка поступает как Encoded, как показывает отладчик:
%7B%22answers%22+%3A+%22test%22%7D=
Исходная строка JSON
{"answers" : "test"}
КОД: JS:
var promise = $.ajax({
type : "post",
dataType : "json",
url : '/myapp/insertEvent',
data : '{"answers" : "test"}',
success : function(data) {
alert('Success');
},
error : function(data) {
alert('System Error, data: ' + data);
}
});
SpringMVC КОНТРОЛЛЕР:
@RequestMapping("/insertEvent")
public boolean insertEvent(@RequestBody String json) {
// Use javax.json to parse the incoming JSON object
JsonReader jsonReader = Json.createReader(new StringReader(json));
// FAILS HERE - parsing error
JsonObject jsonObject = jsonReader.readObject();
System.out.println("JSON Object: " + jsonObject);
jsonReader.close();
}
}
и я использую этот javax.JSON в моем Maven POM:
<!-- Glassfish Javax.JSON Dependency -->
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.json</artifactId>
<version>1.0.4</version>
</dependency>
Какие-нибудь мысли? Является ли входящий @ResponseBody
JSON строка должна быть закодирована? И делает ли Glassfish Javax.json
реализация (JsonReader
и т. д.) есть проблемы с закодированными строками?