File tree Expand file tree Collapse file tree 2 files changed +18
-1
lines changed Expand file tree Collapse file tree 2 files changed +18
-1
lines changed Original file line number Diff line number Diff line change @@ -650,7 +650,18 @@ func Delete(data []byte, keys ...string) []byte {
650650 }
651651 }
652652
653- data = append (data [:keyOffset ], data [endOffset :]... )
653+ // We need to remove remaining trailing comma if we delete las element in the object
654+ prevTok := lastToken (data [:keyOffset ])
655+ remainedValue := data [endOffset :]
656+
657+ var newOffset int
658+ if nextToken (remainedValue ) > - 1 && remainedValue [nextToken (remainedValue )] == '}' && data [prevTok ] == ',' {
659+ newOffset = prevTok
660+ } else {
661+ newOffset = prevTok + 1
662+ }
663+
664+ data = append (data [:newOffset ], data [endOffset :]... )
654665 return data
655666}
656667
Original file line number Diff line number Diff line change @@ -167,6 +167,12 @@ var deleteTests = []DeleteTest{
167167 path : []string {"a" , "[0]" , "b" },
168168 data : `{"a": [{"c": {"b": 3}}], "b": 2}` ,
169169 },
170+ {
171+ desc : "Remove trailing comma if last object is deleted" ,
172+ json : `{"a": "1", "b": "2"}` ,
173+ path : []string {"b" },
174+ data : `{"a": "1"}` ,
175+ },
170176}
171177
172178var setTests = []SetTest {
You can’t perform that action at this time.
0 commit comments