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и т. д.) есть проблемы с закодированными строками?

0 ответов

Другие вопросы по тегам