cro*_*ies 4 java scala jackson riak
我想知道在 Jackson 中序列化和反序列化对象时是否有一种简单的方法来进行 URL 编码/解码。这样做的原因是为了确保要在 Riak 中索引的传入字段不包含非法字符。
例如,我有以下类(在 Scala 中):
case class Client(
@(JsonProperty@field)("guid")
@(RiakKey@field)
val guid: String,
@(JsonProperty@field)("name")
@(RiakIndex@field)(name = "name")
val name: String,
@(JsonProperty@field)("address")
val address: String,
@(JsonProperty@field)("contact")
val contact: String,
@(JsonProperty@field)("phone")
@(RiakIndex@field)(name = "phone")
val phone: String,
@(JsonProperty@field)("suspended")
val suspended: Boolean=false,
@(JsonProperty@field)("created")
val created: Date=now,
@(JsonProperty@field)("updated")
val updated: Date=now
)
Run Code Online (Sandbox Code Playgroud)
所以在name现场,我可能在 Riak 索引的一部分名称之间有一个空格。当我在 Riak 中存储 JSON 对象时,它会产生以下错误:
Caused by: java.net.URISyntaxException: Illegal character in path at index 82: http://db2.3tierlogic.com:8098:8098/buckets/accounts-client/index/name_bin/Calgary Flames
at java.net.URI$Parser.fail(URI.java:2810)
at java.net.URI$Parser.checkChars(URI.java:2983)
at java.net.URI$Parser.parseHierarchical(URI.java:3067)
at java.net.URI$Parser.parse(URI.java:3015)
at java.net.URI.<init>(URI.java:577)
at java.net.URI.create(URI.java:839)
... 105 more
Run Code Online (Sandbox Code Playgroud)
是否有注释或非常简单的 URL 编码和解码方法?
简单的方法是指定您要使用的序列化器/解串器
@JsonSerialize(using=classOf[YourSerializer])
@JsonDeerialize(using=classOf[YourDeserializer])
var customEncodedProperty: String = _
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3646 次 |
| 最近记录: |