Skip to content

Commit 07479ef

Browse files
committed
fix: do not produce null fields in marshalled json
1 parent bdd7f87 commit 07479ef

File tree

3 files changed

+14
-5
lines changed

3 files changed

+14
-5
lines changed

routing/http/server/server_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,11 +128,11 @@ func TestProviders(t *testing.T) {
128128
}
129129

130130
t.Run("JSON Response", func(t *testing.T) {
131-
runTest(t, mediaTypeJSON, false, `{"Providers":[{"Addrs":[],"ID":"12D3KooWM8sovaEGU1bmiWGWAzvs47DEcXKZZTuJnpQyVTkRs2Vn","Protocols":["transport-bitswap"],"Schema":"peer"},{"Schema":"bitswap","Protocol":"transport-bitswap","ID":"12D3KooWM8sovaEGU1bmiWGWAzvs47DEcXKZZTuJnpQyVTkRs2Vz","Addrs":[]}]}`)
131+
runTest(t, mediaTypeJSON, false, `{"Providers":[{"Addrs":[],"ID":"12D3KooWM8sovaEGU1bmiWGWAzvs47DEcXKZZTuJnpQyVTkRs2Vn","Protocols":["transport-bitswap"],"Schema":"peer"},{"Schema":"bitswap","Protocol":"transport-bitswap","ID":"12D3KooWM8sovaEGU1bmiWGWAzvs47DEcXKZZTuJnpQyVTkRs2Vz"}]}`)
132132
})
133133

134134
t.Run("NDJSON Response", func(t *testing.T) {
135-
runTest(t, mediaTypeNDJSON, true, `{"Addrs":[],"ID":"12D3KooWM8sovaEGU1bmiWGWAzvs47DEcXKZZTuJnpQyVTkRs2Vn","Protocols":["transport-bitswap"],"Schema":"peer"}`+"\n"+`{"Schema":"bitswap","Protocol":"transport-bitswap","ID":"12D3KooWM8sovaEGU1bmiWGWAzvs47DEcXKZZTuJnpQyVTkRs2Vz","Addrs":[]}`+"\n")
135+
runTest(t, mediaTypeNDJSON, true, `{"Addrs":[],"ID":"12D3KooWM8sovaEGU1bmiWGWAzvs47DEcXKZZTuJnpQyVTkRs2Vn","Protocols":["transport-bitswap"],"Schema":"peer"}`+"\n"+`{"Schema":"bitswap","Protocol":"transport-bitswap","ID":"12D3KooWM8sovaEGU1bmiWGWAzvs47DEcXKZZTuJnpQyVTkRs2Vz"}`+"\n")
136136
})
137137
}
138138

routing/http/types/record_bitswap.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ type BitswapRecord struct {
2828
Schema string
2929
Protocol string
3030
ID *peer.ID
31-
Addrs []Multiaddr
31+
Addrs []Multiaddr `json:",omitempty"`
3232
}
3333

3434
func (br *BitswapRecord) GetSchema() string {

routing/http/types/record_peer.go

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,9 +64,18 @@ func (pr PeerRecord) MarshalJSON() ([]byte, error) {
6464
m[key] = val
6565
}
6666
}
67+
68+
// Schema and ID must always be set.
6769
m["Schema"] = pr.Schema
6870
m["ID"] = pr.ID
69-
m["Addrs"] = pr.Addrs
70-
m["Protocols"] = pr.Protocols
71+
72+
if pr.Addrs != nil {
73+
m["Addrs"] = pr.Addrs
74+
}
75+
76+
if pr.Protocols != nil {
77+
m["Protocols"] = pr.Protocols
78+
}
79+
7180
return drjson.MarshalJSONBytes(m)
7281
}

0 commit comments

Comments
 (0)