通过Jackson ObjectMapper将参数化url反序列化为java.net.URI时出现InvalidFormatException

时间:2014-03-09 20:58:09

标签: java json jackson

我在json文档中使用以下格式的uri

https://xyz.com/index.php?SCR=visa&restaurant_id=2322&location={LOCATIONID}&customer={CUSTOMERID}&tab={TABID}&

我正在使用rapidxml Jackson ObjectMapper将此url反序列化为java.net.URI(json规范格式=“uri”)

但我得到以下异常

   java.lang.RuntimeException: com.fasterxml.jackson.databind.exc.InvalidFormatException: Can not construct instance of java.net.URI from String value 'https://eat24hours.com/index.php?SCR=m_paypal&restaurant_id=21696&location={LOCATIONID}&customer={CUSTOMERID}&tab={TABID}&': not a valid textual representation a

是否有可以处理此类参数化网址的反序列化功能或模块

2 个答案:

答案 0 :(得分:1)

这是来自URI类本身。杰克逊对此无能为力。您需要使用String代替URI

答案 1 :(得分:1)

杰克逊可以将URI反序列化,但您的URI无效。

https://xyz.com/index.php?SCR=visa&restaurant_id=2322&location={LOCATIONID}&customer={CUSTOMERID}&tab={TABID}&
                                                               ^          ^ invalid characters

这似乎是您尚未替换{...}占位符的URI的模板。将您的字段更改为String,编写您自己的反序列化程序,填充这些点,或使其成为有效的URI。