Решение этой задачи настолько просто и просто, что вы будете смеяться, но прежде чем я доберусь до него, позвольте мне вначале подчеркнуть, что ни один уважающий себя Java-разработчик никогда не будет, и я имею в виду ВСЕГДА работать с JSON без использования высококачественной JSON-библиотеки Jackson.
Jackson является не только рабочей лошадкой и библиотекой JSON для разработчиков Java, но и предоставляет целый набор вызовов API, что делает интеграцию JSON с Java куском торта (вы можете скачать Джексон на http://jackson.codehaus.org/).
Теперь для ответа. Если предположить, что у вас есть UserProfile POJO, который выглядит примерно так:
public class UserProfile {
private String email;
// etc...
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
// more getters and setters...
}
... то ваш метод Spring MVC, чтобы преобразовать имя параметра GET «profileJson» со значением JSON из { «электронной почты»: «mymail @ gmail.com .com "} будет выглядеть следующим образом в вашем контроллере:
import org.codehaus.jackson.JsonParseException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper; // this is your lifesaver right here
//.. your controller class, blah blah blah
@RequestMapping(value="/register", method = RequestMethod.GET)
public SessionInfo register(@RequestParam("profileJson") String profileJson)
throws JsonMappingException, JsonParseException, IOException {
// now simply convert your JSON string into your UserProfile POJO
// using Jackson's ObjectMapper.readValue() method, whose first
// parameter your JSON parameter as String, and the second
// parameter is the POJO class.
UserProfile profile =
new ObjectMapper().readValue(profileJson, UserProfile.class);
System.out.println(profile.getEmail());
// rest of your code goes here.
}
Bam! Все готово. Я бы посоветовал вам изучить основную часть Jackson API, потому что, как я уже сказал, это спасатель. Например, вы вообще возвращаете JSON из своего контроллера? Если это так, все, что вам нужно сделать, это включить JSON в вашу библиотеку и вернуть POJO, и Джексон автоматически преобразует ее в JSON. Вы не можете стать намного легче, чем это. Ура! :-)
Передача JSON в параметр запроса не имеет смысла. Вам нужно как минимум URL-кодировать его. – ashes999
Я его urlencoding. –
Вы передаете json в качестве параметра URL не как тело (которое является значением по умолчанию). Передача JSON в качестве параметра вообще не имеет смысла. Аннотируйте аргумент метода с помощью '@ RequestParam'. Однако, как уже упоминалось, вы должны передавать его как тело запроса и, возможно, также как POST вместо запроса GET. –