포럼을 검색하기 전에이 질문에 대한 답변을 찾기 위해 몇 시간을 보냈습니다. 질문이있는 경우 실례합니다.JSON RPC 응용 프로그램 : JToken에 바이트 배열 추가
제이슨 RPC를 통해 2 바이트 매개 변수를 보내야하지만 약간의 어려움이 있습니다.
저는 개발 플랫폼으로 VB.NET (VS 2013)을 사용하고 있습니다. 내 문제의 근원 인 send 함수를 만들었습니다. 여기 단편이다
**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()**
I 바이트 배열 [187,0]로 "바이트"를 보낸다 (즉 바이트 (0) = 187 (바이트) (1) = 0) 내 RPC 요청. 그러나 Jtoken은 바이트 배열을 기본 64 인코딩을 통해 즉시 문자열로 변환합니다. TextVisualizer를 사용
, 내가 볼 rpcObject =
{ "ID"그 "penultes" "JSONRPC": "2.0", "방법": "dali.send" "의 PARAMS "{ "universe_id "4 "바이트 ""우와 = " "expect_answer "참 "send_twice "거짓 }는 Json.Net 직렬화에 의해 정의 }
안내서, Primitive Type Byte []는 String으로 변환됩니다 (Base 64로 인코딩 됨). 본질적으로 다음 .NET 변환은 "uwA ="문자열을 생성하는 Convert.ToBase64String (bytes)을 발생시킵니다.
나는 그걸로 살 수 있습니다. 그러나 직렬화를 문자열로 변경하기 전에이를 변경해야합니다. 직렬화 이전에 위의 객체 (rpcObject)를 어떻게 수정할 수 있습니까? 문자열 매개 변수 "바이트"값을 "uwA ="로 변환하고 Convert.FromBase64String()을 사용하여 "[187,0]"으로 변환하여 배열을 문자열과 직렬화합니다.
직렬화 전에 매개 변수를 쉽게 분리 할 수있는 쉬운 방법을 찾지 못했습니다.
좋아요! 나는 그것을 시도 할 것이다. –
@MichaelFreeman - 작동 했습니까? – dbc
바이트 배열을 목록 (즉, List (Of [Byte])의 바이트로 변경) –