【问题标题】:JSON-RPC to SOAP and back to JSON: Mapping JSON objects to non-trivial SOAP messagesJSON-RPC 到 SOAP 并返回到 JSON:将 JSON 对象映射到重要的 SOAP 消息
【发布时间】:2011-07-23 01:18:03
【问题描述】:

我正在尝试创建一个服务器,该服务器从客户端获取 JSON-RPC 请求,将这些请求转换为对 SOAP 服务器的非平凡 SOAP 请求,然后获取 SOAP 响应并向客户端发送转换后的 JSON 响应。从 SOAP 服务器返回的响应可能非常复杂和嵌套,我正在尝试将 XML 字段映射到更扁平的 JSON。映射不会是 1:1。例如,我们可能会在 SOAP 响应中取回我们希望在 JSON 响应中作为它们的值从数据库中返回的代码序列。

我愿意使用最合适的任何语言或技术,那么有什么东西已经解决了这个问题或可以提供帮助吗?

【问题讨论】:

标签: java web-services scala soap esb


【解决方案1】:

scalaxb 可以将 SOAP 转换为案例类和接口。 lift-json 可以将案例类转换为 json。

scalaxb 生成的代码是 1:1。见wsdl 1.1 support

如果您想将案例类映射到其他一些中间案例类,您可以先执行此操作。然后你可以应用 lift-json 自动把它们转成 json

scala> import net.liftweb.json._
scala> import net.liftweb.json.Serialization.{read, write}
scala> implicit val formats = Serialization.formats(NoTypeHints)
scala> val ser = write(Child("Mary", 5, None))
scala> read[Child](ser)
res1: Child = Child(Mary,5,None)

或手动

scala> import net.liftweb.json._
scala> implicit val formats = DefaultFormats // Brings in default date formats etc.
scala> case class Child(name: String, age: Int, birthdate: Option[java.util.Date])
scala> case class Address(street: String, city: String)
scala> case class Person(name: String, address: Address, children: List[Child])
scala> val json = parse(...)
scala> json.extract[Person] 
res0: Person = Person(joe,Address(Bulevard,Helsinki),List(Child(Mary,5,Some(Sat Sep 04 18:06:22 EEST 2004)), Child(Mazy,3,None)))

【讨论】:

  • 您能否详细说明一下它是如何工作的?不会映射still be 1:1吗?
猜你喜欢
  • 2017-01-01
  • 2019-05-27
  • 1970-01-01
  • 2012-04-23
  • 1970-01-01
  • 1970-01-01
  • 2012-07-12
  • 1970-01-01
  • 2017-12-24
相关资源
最近更新 更多