- Fix value of totalLength for encoding ( #236 )
b, err := json.MarshalWithOption(v, json.Colorize(json.DefaultColorScheme))
if err != nil {
...
}
fmt.Println(string(b)) // print colored json
- Fix opcode layout - Adjust memory layout of the opcode to 128 bytes in a 64-bit environment ( #230 )
- Refactor encode option ( #231 )
- Refactor escape string ( #232 )
- Add type addrShift to enable bigger encoder/decoder cache ( #213 )
- Keep original reference of slice element ( #229 )
- Refactor Debug mode for encoding ( #226 )
- Generate VM sources for encoding ( #227 )
- Refactor validator for null/true/false for decoding ( #221 )
- Fix stream decoder for unicode char ( #215 )
- Fix decoding of slice element ( #219 )
- Fix calculating of buffer length for stream decoder ( #220 )
- replace skipWhiteSpace goto by loop ( #212 )
- Add valyala/fastjson to benchmark ( #193 )
- Add benchmark task for CI ( #211 )
- Fix decoding of slice with unmarshal json type ( #198 )
- Fix decoding of null value for interface type that does not implement Unmarshaler ( #205 )
- Fix decoding of null value to []byte by json.Unmarshal ( #206 )
- Fix decoding of backslash char at the end of string ( #207 )
- Fix stream decoder for null/true/false value ( #208 )
- Fix stream decoder for slow reader ( #211 )
- If cap of slice is enough, reuse slice data for compatibility with encoding/json ( #200 )
- Support validation the input buffer for json.Compact and json.Indent ( #189 )
- Optimize json.Compact and json.Indent ( improve memory footprint ) ( #190 )
- Fix unnecessary indent for empty slice type ( #181 )
- Fix encoding of omitempty feature for the slice or interface type ( #183 )
- Fix encoding custom types zero values with omitempty when marshaller exists ( #187 )
- Fix decoder for invalid top level value ( #184 )
- Fix decoder for invalid number value ( #185 )
- Improve decoder performance for interface type
- Fixed a bug when encoding slice and map containing recursive structures
- Fixed a logic to determine if indirect reference
If you use json.MarshalWithOption(v, json.Debug())
and panic
occurred in go-json
, produces debug information to console.
- invalid UTF-8 is coerced to valid UTF-8 ( without performance down )
- Fixed handling of MarshalJSON of function type
If there is a pointer value, go-json will use it. (This behavior is necessary to achieve the ability to prioritize pre-filled values). However, since slices are reused internally, there was a bug that referred to the previous pointer value. Therefore, it is not necessary to refer to the pointer value in advance for the slice element, so we explicitly initialize slice element by nil
.
- go-json have used about 2GB of memory at compile time, but now it can compile with about less than 550MB.
- Add many test cases for encoder
- Fix composite type ( slice/array/map )
- Fix pointer types
- Fix encoding of MarshalJSON or MarshalText or json.Number type
- Change package layout for reducing memory usage at compile
- Remove anonymous and only operation
- Remove root property from encodeCompileContext and opcode
- Add Go 1.16
- Remove Go 1.13
- Fix
make cover
task
- Fix decoding of deep recursive structure
- Fix decoding of embedded unexported pointer field
- Fix invalid test case
- Fix decoding of invalid value
- Fix decoding of prefilled value
- Fix not being able to return UnmarshalTypeError when it should be returned
- Fix decoding of null value
- Fix decoding of type of null string
- Use pre allocated pointer if exists it at decoding
- Integrate int/int8/int16/int32/int64 and uint/uint8/uint16/uint32/uint64 operation to reduce memory usage at compile