<- Back to shtanton's homepage
aboutsummaryrefslogtreecommitdiff
path: root/json
diff options
context:
space:
mode:
authorCharlie Stanton <charlie@shtanton.xyz>2024-03-25 17:31:16 +0000
committerCharlie Stanton <charlie@shtanton.xyz>2024-03-25 17:31:16 +0000
commit510a8c95ce112617c33f8dfb865e752db0716cb1 (patch)
tree4436165fb73891c5bde6f355b313d372827900b9 /json
parente9a296e8bc8f25138ea5910c8b09661f8ae25f10 (diff)
downloadstred-go-510a8c95ce112617c33f8dfb865e752db0716cb1.tar
Fix another bug in inMapAt and inArrayAt
Diffstat (limited to 'json')
-rw-r--r--json/write.go4
-rw-r--r--json/write_test.go16
2 files changed, 18 insertions, 2 deletions
diff --git a/json/write.go b/json/write.go
index 334dfc0..3a5a621 100644
--- a/json/write.go
+++ b/json/write.go
@@ -217,7 +217,7 @@ func (writer *JSONWriter) inMapAt(keepLen int, path []walk.PathSegment) bool {
return writer.state == JSONWriterStateInMap
}
- _, isString := writer.path[0].(string)
+ _, isString := writer.path[keepLen].(string)
return isString
}
@@ -230,7 +230,7 @@ func (writer *JSONWriter) inArrayAt(keepLen int, path []walk.PathSegment) bool {
return writer.state == JSONWriterStateInArray
}
- _, isInt := writer.path[0].(int)
+ _, isInt := writer.path[keepLen].(int)
return isInt
}
diff --git a/json/write_test.go b/json/write_test.go
index a0e8c3e..b495d94 100644
--- a/json/write_test.go
+++ b/json/write_test.go
@@ -263,6 +263,22 @@ func TestWrite(t *testing.T) {
},
expected: `[[["a"],[]]]`,
},
+ {
+ values: []walk.Value {
+ walk.ArrayValue {{
+ Index: 0,
+ Value: walk.MapValue {{
+ Key: "a",
+ Value: walk.StringValue("a"),
+ }},
+ }},
+ walk.ArrayValue {{
+ Index: 0,
+ Value: walk.MapValue{},
+ }},
+ },
+ expected: `[{"a":"a"}]`,
+ },
}
for i, test := range tests {