Имея JSON с таким свойством, которое я пытаюсь десериализовать с помощью Джексона:
{ "$fooid" : "yfdfjjhkjhkljhd768622323jjj" }
Проблема в том, что я не могу прочитать ключ «$ fooid».
Я попытался аннотировать свойство с помощью
@JsonAlias("$fooid")
private String fooid;
также как
@JsonProperty("$fooid")
private String fooid;
Оба варианта работать не будут, свойство fooid всегда равно нулю.
Как десериализовать его на Java? Какие-нибудь намеки?
оба работают и у меня с Джексоном 2.9.6
как ты читаешь этот json? потому что когда я пытаюсь десериализовать String json = "{ \"$fooid\" : \"yfdfjjhkjhkljhd768622323jjj\" }" ; у меня он работает с версией 2.0.0, у вас есть также геттер и сеттер для fooid?
Хм, я тоже использую jackson 2.9.6, но у меня это не сработает. @kukkuz Можете ли вы предложить свое решение? Я использую GSON в качестве генератора. Может в этом проблема?
import com.fasterxml.jackson.annotation.JsonAlias; import com.fasterxml.jackson.databind.ObjectMapper; import java.io.IOException; class Hello { @JsonAlias("$fooid") private String fooid; public String getFooid() { return fooid; } public void setFooid(String fooid) { this.fooid = fooid; } public static void main(String[] args) throws IOException { Hello hello = new ObjectMapper().readValue("{ \"$fooid\" : \"yfdfjjhkjhkljhd768622323jjj\" }", Hello.class); System.out.println(hello.getFooid()); } }@kukuzz, большое спасибо. Я попробовал, как вы и сказали, и он работает.




Я не уверен, как вы это делаете, но у меня это работает в версии 2.0.0.
public class JSonAliasWithSpecialCharacters {
public static void main(String[] args) throws IOException {
String json = "{ \"$fooid\" : \"yfdfjjhkjhkljhd768622323jjj\" }";
ObjectMapper mapper = new ObjectMapper();
JsonFooid fooid = mapper.readValue(json, JsonFooid.class);
System.out.println("read the foodid:"+fooid.getFooid());
}
}
public class JsonFooid {
@JsonProperty("$fooid")
private String fooid;
public String getFooid() {
return fooid;
}
public void setFooid(String fooid) {
this.fooid = fooid;
}
}
Японец, с помощью этого решения я получаю десериализацию JSON. Думаю, проблема в моей сети - это GSON. Спасибо @vmrvictor.
Вы пытались поместить аннотацию в геттер / сеттер (посмотрите документацию) и убедитесь, что пакеты совпадают? (Иногда у нас возникают проблемы с аннотациями Jackson 1.x по сравнению с Jackson 2.x во время выполнения.)