diff options
| author | Charlie Stanton <charlie@shtanton.xyz> | 2024-03-25 17:31:16 +0000 | 
|---|---|---|
| committer | Charlie Stanton <charlie@shtanton.xyz> | 2024-03-25 17:31:16 +0000 | 
| commit | 510a8c95ce112617c33f8dfb865e752db0716cb1 (patch) | |
| tree | 4436165fb73891c5bde6f355b313d372827900b9 | |
| parent | e9a296e8bc8f25138ea5910c8b09661f8ae25f10 (diff) | |
| download | stred-go-510a8c95ce112617c33f8dfb865e752db0716cb1.tar | |
Fix another bug in inMapAt and inArrayAt
| -rw-r--r-- | json/write.go | 4 | ||||
| -rw-r--r-- | json/write_test.go | 16 | 
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 { | 
