Я новичок в Java. Я использую Spring для использования REST api, который выводит JSON. С помощью учебных пособий на веб-сайте Spring я могу легко получить ответ JSON, преобразованный в объект моего желаемого класса. Проблема в том, что один из ключей в ответе JSON - $id
. Я не могу сделать переменную со знаком доллара. Я предполагаю, что я должен где-то определить какую-то конфигурацию, чтобы такое имя было преобразовано во что-то приемлемое. Я не знаю, как это сделать.
My Rest Код запроса:
protected LoginResult doInBackground(Void... params) {
try {
Log.i(TAG, "Making Login request");
//TODO: Make this a setting
final String url = "https://someurl.com/api/login";
LoginCredentials login = new LoginCredentials("[email protected]", "qwerty123");
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
LoginResult result = restTemplate.postForObject(url, login, LoginResult.class);
Log.d(TAG, "Got the LoginResult.");
return result;
} catch (Exception e) {
//TODO: Exception handling
Log.e(TAG, e.getMessage(), e);
}
return null;
}
В результате JSON выглядит примерно так:
{
"_id":{
"$id":"98765432"
},
"name":"Person Guy",
"email":"[email protected]",
"roles":[
"user"
],
"active":true,
"created":{
"sec":1439117849,
"usec":856000
},
"session":{
"token":"12345678",
"user_id":"98765432",
"created":{
"sec":1439134272,
"usec":0
},
"last_extended":{
"sec":1439134272,
"usec":0
},
"expires":{
"sec":1439998272,
"usec":0
}
}
}
$id
часть, где все становится сложнее. Класс LoginResult выглядит следующим образом:
@JsonIgnoreProperties(ignoreUnknown = true)
public class LoginResult {
private String name;
private String email;
private MongoId _id;
/* Getters and setters */
}
Класс Mongoid выглядит следующим образом (JsonIgnoreProperties
теперь добавляется, чтобы избежать исключения):
@JsonIgnoreProperties(ignoreUnknown = true)
public class MongoId {
private String id; //This is $id in the JSON response.
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
Любая помощь будет в значительной степени оценены.
Я подозрительно, если $ является проблемой. – Garry
@Garry, используя переменные $ в переменных в Android Studio, дает мне всевозможные ошибки. Также кажется, что Java препятствует использованию $ -signs в переменных в своей документации. – Coo