2

私のインターフェイス システムは、タプルのリストなど、Erlang 用語の文字列表現を送信する Erlang の世界からの結果を提供します。

[ {"key1" , ["AAA", "BBB"] } , {"key2" , ["CCC", "DDD"] } ]

Java でこの文字列を受け取ったら、OTP ライブラリ (com.ericsson.otp.OtpErlangList など) を使用して解析 (デシリアライズ) します。

私の状況では、Erlang OTP に直接接続したり、Json や Xml を使用したりしたくありません (可能であれば、できるだけネイティブに処理しようとしています)。

文字列を OtpErlangList に変換すると、整数のリストが得られるので、全体として、erlang の文字列はコードのリストであるため、単純に文字コードに変換されたと思います。JInterface にはデシリアライザーがないようです。この場合、JSON を使用せざるを得なくなります。

OtpErlangObject (および他のすべてのサブクラス) には toString メソッドがあるため、方法が必要です。なぜ彼らはそれを逆にする能力を与えないのでしょうか ( fromString(String str) ) ?

繰り返し: Java で erlang 用語の文字列表現を文字列から直接 JInterface オブジェクトに変換する方法 (ノード接続なし、JSON とのインターフェースなど)。

4

5 に答える 5

2

JInterface はそのような機能を提供していません。これは、Erlang 内部ネットワーク プロトコルを介した Erlang ノードとの通信を目的としています。あなたの場合、私はおそらくantlrのようなものでパーサーを書くでしょう。文法に基づいて、好きなオブジェクト構造を構築できます。

于 2013-04-04T06:23:11.607 に答える
1

Erlang 文字列の解析が JSON の解析よりネイティブである理由がわかりません。ただし、本当にこれを行いたい場合は、クラスを使用して、解析するOtpInputStreamバイト配列で初期化できる場合があります。String次に、電話read_anyして を取得しOtpErlangObjectます。ドキュメントはここにあります: OtpInputStream

于 2013-04-05T19:19:21.043 に答える