フォーラムを検索して、この質問への回答を投稿する前に数時間を費やしましたので、質問のどこかで質問してください。JSON RPCアプリケーション:JTokenにバイト配列を追加
Jason RPC経由で2バイトのパラメータを送信する必要がありますが、いくつか問題があります。
開発プラットフォームとしてVB.NET(VS 2013)を使用しています。自分の問題の原因となる送信関数を作成しました。ここでは抜粋です。
**Public Function daliSend(url As String, universe_id As Integer, bytes As Byte(), expect_answer As Boolean, send_twice As Boolean) As Result
Dim rpcObject As New JObject() From { _
{"Id", generateRandomString()}, _
{"Jsonrpc", "2.0"}, _
{"method", "dali.send"}, _
{"params", New JObject() From { _
{"universe_id", universe_id}, _
{"bytes", bytes}, _
{"expect_answer", expect_answer}, _
{"send_twice", send_twice} _
}} _
}
Dim json As String = JsonConvert.SerializeObject(rpcObject).ToLower()**
私はバイト配列[187,0]として "バイト" を送信しています(すなわちバイト(0)= 187、バイト(1)= 0)私のRPC要求のため。ただし、Jtokenは、バイト配列をベース64エンコーディングを介してすぐに文字列に変換します。 "penultes"、 "JSONRPC": "2.0"、 "方法": "dali.send"、 「paramsは私はrpcObjectが=
{ "ID" を参照TextVisualizerを使用
、 「:{ "universe_id偽 ":4、 "バイト": "UWA ="、 "expect_answer":真、 "send_twice"} Json.Net直列化における定義により }
ガイド、プリミティブ型Byte []はString(base 64 encoded)に変換します。本質的に、次の.NET変換はConvert.ToBase64String(bytes)という文字列 "uwA ="を生成しています。
私はそれで生きることができます。ただし、これをシリアル化する前に文字列に変更する必要があります。私は上記のオブジェクト(rpcObject)をシリアル化する前にどのように変更することができますか?私がする必要があるのは、文字列パラメータ "bytes"の値 "uwA ="をConvert.FromBase64String()を使って "[187,0]"に変換することです。
シリアル化する前に、そのパラメータだけを簡単に分離する方法はありませんでした。
素晴らしい!私はそれを試してみましょう。 –
@MichaelFreeman - それは機能しましたか? – dbc
何がうまくいったのは、バイト配列をリスト(バイト(List [Of [Byte]) –