https://github.com/romshark/jscan-experimental-decoder
This is an experimental JSON decoder for Go based on jscan
https://github.com/romshark/jscan-experimental-decoder
decoder experimental go json
Last synced: 7 months ago
JSON representation
This is an experimental JSON decoder for Go based on jscan
- Host: GitHub
- URL: https://github.com/romshark/jscan-experimental-decoder
- Owner: romshark
- License: bsd-3-clause
- Created: 2024-01-18T23:20:43.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-03-21T11:10:29.000Z (over 1 year ago)
- Last Synced: 2025-01-29T02:44:53.858Z (8 months ago)
- Topics: decoder, experimental, go, json
- Language: Go
- Homepage: https://github.com/romshark/jscan
- Size: 638 KB
- Stars: 3
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Experimental JSON decoder based on [jscan](https://github.com/romshark/jscan)
⚠️ Don't use in production! ⚠️
This is an experimental JSON Unmarshaler/Decoder implementation for Go based on
[jscan](https://github.com/romshark/jscan). This decoder will be moved to jscan v3 once it's
ready for production.The jscan decoder is expected to be a backward compatible drop-in replacement for [encoding/json](https://pkg.go.dev/encoding/json).
Roadmap:
- [x] Primitive types
- [x] Struct types
- [x] Type `struct{}`
- [x] Recursive struct types
- [x] Slices
- [x] Arrays
- [x] Type `any`
- [x] Type `map`
- [x] `string` keys
- [x] `encoding.TextUnmarshaler` keys
- [x] Integer keys
- [x] JSON struct tags
- [x] Case-insensitive key matching (backward-compatibility feature of `encoding/json`)
- [x] Option `DisallowUnknownFields`
- [x] Option `DisableFieldNameUnescaping`
- [x] Option `DisableCaseInsensitiveMatching`
- [ ] Option `DisallowDuplicateNames`
- [x] Struct tag option `string`
- [x] Pointers
- [x] Type `Unmarshaler interface { UnmarshalJSON([]byte) error }`
- [x] Type `TextUnmarshaler interface { UnmarshalText(text []byte) error }`
- [ ] `encoding/json` compatible drop-in replacement package `jscandec/std`
- [ ] `encoding/json` compatible error messages