JSON-RPC в SOAP и обратно в JSON: сопоставление объектов JSON с нетривиальными сообщениями SOAP - PullRequest
0 голосов
/ 22 июля 2011

Я пытаюсь создать сервер, который принимает запросы JSON-RPC от клиента, преобразует их в нетривиальные запросы SOAP на сервер SOAP, затем принимает ответ SOAP и отправляет клиенту преобразованный ответ JSON. Ответы, которые возвращаются с сервера SOAP, потенциально очень сложны и вложены, и я пытаюсь сопоставить поля XML с более приятным JSON. Отображения не будут 1: 1. В качестве примера мы можем получить последовательность кодов в ответе SOAP, которую мы хотим вернуть в ответе JSON как их значения из базы данных.

Я готов использовать любые языки или технологии, которые лучше всего подходят, поэтому есть ли что-нибудь, что уже решает эту проблему или может помочь?

1 Ответ

0 голосов
/ 22 июля 2011

scalaxb может превратить SOAP в классы и интерфейсы case. lift-json может превратить классы дел в json.

Сгенерированный скалаксб код будет 1: 1. См. Поддержка WSDL 1.1 .

Если вы хотите отобразить классы case в некоторые другие промежуточные классы case, вы можете сделать это в первую очередь. Затем вы можете применить Лифт-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)))
...