賞金將在 5 天后到期。此問題的答案有資格獲得 50聲望賞金。 juan2raid想引起更多關注這個問題:
尋找不需要為每個 Java 類撰寫 CustomSerializer 的解決方案。
我有一些 scala 代碼需要能夠使用 Json4s 序列化/反序列化一些 Java 類。
我正在使用"org.json4s" %% "json4s-ext" % "4.0.5","org.json4s" %% "json4s-jackson" % "4.0.5"雖然我也嘗試過使用該3.6.7版本。
型號代碼(Java):
import com.fasterxml.jackson.annotation.JsonProperty;
public class Blah {
@JsonProperty("what")
public final String what;
public Blah() {
this(null);
}
public Blah(String what) {
this.what = what;
}
}
序列化(Scala):
import org.json4s.DefaultFormats
import org.json4s.jackson.Serialization
println(Serialization.write(new Blah("helloooo!!!!"))(DefaultFormats))
它只會列印出來:{}.
我知道我可以CustomSerializer為每個 Java 類撰寫一個,但我有很多 Java 類,我真的很想避免這樣做。關于如何使這項作業的任何想法?
uj5u.com熱心網友回復:
嘗試為您的what屬性添加 getter 方法
uj5u.com熱心網友回復:
Json4s 忽略任何JsonProperty注解,并且對 Java 模型類的每個屬性都需要建構式引數和 Scala 案例類樣式的 getter 方法。在上面的示例中,它看起來像:
public class Blah {
private final String what;
public String what() {
return what;
}
public Blah() {
this(null);
}
public Blah(String what) {
this.what = what;
}
}
uj5u.com熱心網友回復:
Json4s 是 Scala 的 Json 庫。要使用 Java 物件,建議直接使用 Jackson。在這里看到這個問題
Json4s 僅使用 jackson 作為決議器,決議后,它通過從 Json4s AST 到 Scala 物件的匹配來作業。
如果你想使用 Java 集合,你應該直接使用 Jackson
因此,我們可以得到mapper杰克遜的物件ObjectMapper并正常使用它 -
import org.json4s.jackson.JsonMethods
println(JsonMethods.mapper.writeValueAsString(new Blah("helloooo!!!!")))
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/474428.html
