Я борюсь с этим уже несколько часов, и я оказался в тупике.Кажется, все настроено так же, как и в других вопросах и руководствах по стеку, но объект DateTime
не будет сериализован в любом случае.Чего мне не хватает?
Я уже установил JodaModule()
, и на мгновение я также отключил ADJUST_DATES_TO_CONTEXT_TIME_ZONE
в маппере, потому что текущая ошибка: java.lang.NoSuchFieldError: No static field ADJUST_DATES_TO_CONTEXT_TIME_ZONE
, но это не помогло.
Упрощенный код:
ObjectMapper mapper = new ObjectMapper();
mapper.registerModules(new JodaModule());
Book newBook = new Book();
newBook.setCreationtime(new DateTime());
String convertedBook = null;
try {
convertedBook = mapper.writeValueAsString(newBook);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
gradle:
compile 'joda-time:joda-time:2.9.4'
compile files('libs/jackson-datatype-joda-2.9.4.jar')
compile files('libs/jackson-core-2.9.5.jar')
Редактировать: Через некоторое время я почти уверен, что проблема в Book.class
:
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.joda.JodaModule;
import org.joda.time.DateTime;
import java.io.IOException;
import java.io.Serializable;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ObjectMapper mapper = new ObjectMapper();
mapper.registerModules(new JodaModule());
try {
Book newBook = new Book();
newBook.setId(10);
newBook.setCreationtime(new DateTime());
String json = mapper.writeValueAsString(newBook);
Book newBook2 = mapper.readValue(json, Book.class);
String result = newBook2.getId() + ", " + newBook2.getCreationtime();
} catch (JsonProcessingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"id",
"creationtime"
})
public static class Book implements Serializable {
@JsonProperty("id")
private Integer id;
@JsonProperty("creationtime")
private DateTime creationtime;
@JsonProperty("id")
public Integer getId() {
return id;
}
@JsonProperty("id")
public void setId(Integer id) {
this.id = id;
}
@JsonProperty("creationtime")
public DateTime getCreationtime() {
return creationtime;
}
@JsonProperty("creationtime")
public void setCreationtime(DateTime creationtime) {
this.creationtime = creationtime;
}
}
}