Skip to content

Commit 7b145eb

Browse files
authored
Merge pull request #46 from vanilla-rtb/master
fix StringOrNumber for empty strings
2 parents 1979186 + 6442b40 commit 7b145eb

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

numbers.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ type StringOrNumber string
3636

3737
// UnmarshalJSON implements json.Unmarshaler
3838
func (n *StringOrNumber) UnmarshalJSON(data []byte) error {
39-
if len(data) > 2 && data[0] == '"' && data[len(data)-1] == '"' {
39+
if len(data) >= 2 && data[0] == '"' && data[len(data)-1] == '"' {
4040
var v string
4141
if err := json.Unmarshal(data, &v); err != nil {
4242
return err

numbers_test.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,24 @@ var _ = Describe("StringOrNumber", func() {
4444
Expect(n).To(Equal(StringOrNumber("33")))
4545
})
4646

47+
It("should decode strings", func() {
48+
var n StringOrNumber
49+
Expect(json.Unmarshal([]byte(`""`), &n)).To(Succeed())
50+
Expect(n).To(Equal(StringOrNumber("")))
51+
})
52+
4753
It("should encode to strings", func() {
4854
var n StringOrNumber = "33"
4955
bin, err := json.Marshal(n)
5056
Expect(err).NotTo(HaveOccurred())
5157
Expect(string(bin)).To(Equal(`"33"`))
5258
})
5359

60+
It("should encode to strings", func() {
61+
var n StringOrNumber = ""
62+
bin, err := json.Marshal(n)
63+
Expect(err).NotTo(HaveOccurred())
64+
Expect(string(bin)).To(Equal(`""`))
65+
})
66+
5467
})

0 commit comments

Comments
 (0)