Skip to content

Commit

Permalink
fix json bytearray output
Browse files Browse the repository at this point in the history
  • Loading branch information
spali committed Jul 30, 2021
1 parent 803a076 commit 78bd126
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 4 deletions.
15 changes: 11 additions & 4 deletions cmd/e3dc/json_output.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"encoding/json"
"fmt"
"sort"
"strings"

"github.com/spali/go-rscp/rscp"
)
Expand Down Expand Up @@ -71,17 +72,23 @@ func (m JSONMessage) MarshalJSON() ([]byte, error) {
for i, key := range keys {
var (
b []byte
vb []byte
err error
)
t := rscp.Tag(key)
if b, err = json.Marshal(t); err != nil {
return nil, err
}
if vb, err = json.Marshal(m[t]); err != nil {
return nil, err
switch v := m[t].(type) {
default:
if v, err = json.Marshal(v); err != nil {
return nil, err
}
buffer.WriteString(fmt.Sprintf("%s:%s", b, v))
case []uint8:
// bytearray as json array of numbers
va := strings.Join(strings.Fields(fmt.Sprintf("%d", v)), ",")
buffer.WriteString(fmt.Sprintf("%s:%s", b, va))
}
buffer.WriteString(fmt.Sprintf("%s:%s", b, vb))
if i < lastIndex {
buffer.WriteString(",")
}
Expand Down
7 changes: 7 additions & 0 deletions cmd/e3dc/json_output_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,13 @@ func TestJSONSimpleMessage_MarshalJSON(t *testing.T) {
[]byte(`{"BAT_DATA":{"BAT_INDEX":0,"BAT_RSOC":0}}`),
false,
},
{"byte array as array bot as string",
JSONMessage{
rscp.WB_EXTERN_DATA: []uint8{0, 0, 6, 0, 0, 0, 0, 0},
},
[]byte(`{"WB_EXTERN_DATA":[0,0,6,0,0,0,0,0]}`),
false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
Expand Down

0 comments on commit 78bd126

Please sign in to comment.