【问题标题】:Custom marshalling, unstandard form定制编组,非标准形式
【发布时间】:2013-05-11 22:31:55
【问题描述】:

我知道有 Java 库可以将 XML 字符串转换为对象。此外,Jersey 包含使用某些数据类型的方法。

我的问题是我有一个表示对象的字符串(像 XML 字符串,但不是 XML),我很好奇是否有一种简单的方法来制作自定义编组器。

【问题讨论】:

    标签: java rest jersey marshalling unmarshalling


    【解决方案1】:

    如果您使用 JAXB 进行编组,请尝试编写 XmlAdapter(尽管有名称,它可以编组到/来自 String)。

    如果您使用的是 Jackson,他们有一个 HOWTO for writing custom serializers

    有关您已经在使用的工具和框架的一些其他详细信息将有助于生成更具体的答案。

    【讨论】:

    • 现在,数据以多值映射的形式出现。 “标签”的等价物是键,而根级元素是“值”。我正在使用带有 Jersey 作为 servlet 的 tomcat6。
    • 另外,我只是在解析字符串并手动创建 java 对象。
    • 如果字符串是您自定义的“不完全 XML”格式,您仍需要手动解析字符串以创建 Java 对象。您可以使用解析器/词法分析器框架自动执行此操作,但您仍然必须编写语法和相关方法来处理格式的边缘情况。如果您可以从自定义格式切换到已经理解的字符串格式(例如 YAML、JSON,甚至是格式良好的 XML),那么您的工作会更轻松。但是如果你不能,我上面说的是你可以写一个序列化器/适配器,这样解析和转换代码就在一个地方。
    • 是的,这是正确的路线。我必须制定一个算法将我的输入转换为 XML,然后使用 STAX。我希望在可用的基础设施方面有一个更优雅的解决方案,但这是可行的!感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-09
    • 2013-03-07
    • 2010-12-19
    • 1970-01-01
    相关资源
    最近更新 更多