Commit Graph

53 Commits

Author SHA1 Message Date
Jacek Sieka b83739b430
allow serializing distinct arrays (#97)
A complement to
https://github.com/status-im/nim-json-serialization/pull/93
2024-09-26 16:19:22 +02:00
andri lim 8a4ed98bbd
Add compile time switch to alter encoder enum representation (#95)
* Add compile time switch to alter encoder enum representation

* Fix test

* Add enum section in README.md

Add more tests and encoder features of enums

* Add enums section to README.md
2024-07-27 07:27:11 +07:00
Etan Kissling 89f7be1783
extend automatic serialization support for `distinct` in Nim 2 (#93)
In Nim 2, `distinct` values no longer match `value is object` but need
to be checked separately with `value is distinct`. The underlying type
can be unwrapped with `distinctBase` to inspect whether this is a value
of type `distinct object` or `distinct` something-else.
2024-07-03 16:11:05 +02:00
Etan Kissling 56c788bb25
avoid `XDeclaredButNotUsed` when no field `isnot JsonVoid` (#87)
Move the type definitions for `Writer` and `Flavor` closer to their
usage to avoid verbose hints when they are never used in an invocation.
2024-02-28 22:01:21 +00:00
andri lim d9394dc728
Resilience against null fields (#78)
* Resilience against fields with null value

* writeField helper also handle optional fields correctly

* Use uint4 for test_parser's parseValue

* Add parseObjectWithoutSkip and parseObjectSkipNullFields
2024-01-17 13:39:29 +07:00
andri lim b14f5b58e9
Deconvolute optional fields writer (#77) 2024-01-17 07:48:42 +07:00
jangko 9c74b885ea
Writer produce correct top-level or in-array optional elem when custom flavor omit optional fields 2024-01-11 16:51:00 +07:00
jangko 6417b7656b
Reduce declared but not used warning 2023-12-29 12:34:39 +07:00
jangko 61a03e20d3
Add JsonVoid, JsonNumber, and JsonValueRef to JsonWriter 2023-12-27 11:58:02 +07:00
jangko 61bae43e01
Improve lexer flexibility 2023-12-26 16:03:46 +07:00
jangko 34dc825066
Add copyright year to source file 2023-12-25 22:55:07 +07:00
zah f42567c00c
Basic support for Json flavours without default object serialization (#66)
Other changes:

* Migrate many procs accepting JsonReader to JsonLexer in order to
  reduce the number of generic instantiations and the resulting code
  bloat
2023-12-19 12:00:24 +02:00
Etan Kissling 85b7ea093c
add `{.raises.}` annotation to `writeValue` (#64)
Tag `writeValue` overrides with `{.raises: [IOError].}`.

The override in `writer.nim` also needs `gcsafe` to support recursion
in Nim 2.0.
2023-08-19 13:47:32 +02:00
Etan Kissling ed4440d881
use string value when encoding enums (#55)
Currently, we encode enum values always as the numeric value `ord(val)`.
unless explicitly overridden using `serializesAsTextInJson` or with a
custom `writeValue` implementation. Reduce verbosity by automatically
doing that.
2023-05-27 12:42:08 +03:00
Tanguy e5b18fb710
bugfix: a leading field with a 'none' value was producing an incorrect encoding (#50)
The field was omitted, but not the comma following it, resulting in an
encoding such as '{, otherFields: ...}'
2022-07-15 10:23:35 +00:00
tersec 5a7f9a86cb
fix Nim 1.6 deprecation warning (#48) 2022-07-01 17:48:29 +00:00
Zahary Karadjov bedbe6595a
Avoid overloading the separate classes of writeField ops 2022-06-19 12:38:44 +03:00
Zahary Karadjov 95399caff3
Use latest nim-serialization; Add tests for useCustomSerialization 2022-06-18 13:34:04 +03:00
Zahary Karadjov cc5038e0e2
Add writer.stepwiseArrayCreation 2022-06-17 20:16:28 +03:00
zah b9af0be99d
Don't write empty optional fields (#47) 2022-06-16 17:14:00 +03:00
tersec 7d3d339e73
rm TaintedString (#43) 2022-06-04 08:58:13 +02:00
Jacek Sieka cd044da00f
clean up imports/exports (#31) 2022-02-18 10:26:15 +01:00
Tanguy 010aa238cf Enable styleCheck:usages 2021-12-15 13:17:38 +02:00
Zahary Karadjov 297496d703 NULL cstrings are encoded to JS null 2021-11-01 18:59:12 +02:00
Zahary Karadjov fe8a82ca76
Adapt to the latest nim-serialization API 2021-03-19 04:13:55 +02:00
Zahary Karadjov 706eb5740e
Add support for serialization flavors 2021-03-18 13:01:06 +02:00
Zahary Karadjov cedf0c5f0c
Add a low-level API for controlling the state of the Writer when writing to the output stream manually 2020-11-27 19:42:33 +02:00
Zahary Karadjov 32f75d93b0
Add support for TaintedString 2020-11-12 21:00:10 +02:00
Zahary Karadjov f011bea54b
Add a helper for specifying enums types that must be serialized as strings 2020-08-02 20:15:13 +03:00
Zahary Karadjov d5eb9427b8
Serialization of JsonNode fields 2020-07-24 23:16:35 +03:00
Zahary Karadjov 4f2aa8b5cb
Make the JsonString type more accessible 2020-06-01 21:15:33 +03:00
Zahary Karadjov 2f5e71b25f
Use the latest FastStreams API 2020-05-13 11:43:52 +03:00
Jacek Sieka e485b74a10 treat array-of-char as string 2020-04-29 19:37:34 +03:00
Zahary Karadjov 16931f4fa3
Use the improved InputStream API 2020-04-10 16:46:12 +03:00
Zahary Karadjov bdddff5037
Use the latest FastStreams API 2020-04-09 23:14:14 +03:00
Zahary Karadjov 6350b72b5e
Handle openArrays in writeField 2020-03-18 20:20:35 +02:00
Zahary Karadjov ab53e009b9
Add JsonString. to facilitate easier logging in Chronicles 2020-03-18 18:21:18 +02:00
Zahary Karadjov 88b79e2300
Remove warnings in Nim 1.0.2 2019-11-04 18:42:34 +00:00
Zahary Karadjov f6a7da52e0
Handle the writing aspects of custom field serialization 2019-08-07 01:20:27 +03:00
Zahary Karadjov 9a8d593598
Fix compilation issues with Nim 0.19.6 2019-08-02 15:07:06 +03:00
Zahary Karadjov 943501f941
Improved support for range types 2019-07-19 02:02:15 +03:00
Zahary Karadjov 73d9e0d458
Handle changes in the serialization APIs 2019-07-18 21:20:17 +03:00
Zahary Karadjov 7922a83c4d
Serialization for sets 2019-07-16 13:20:05 +03:00
Zahary Karadjov cbec44d339 Handle more standard-libary types 2019-03-25 01:11:54 +02:00
Zahary Karadjov c2daa5a23c Improved error handling and pretty-printing for arrays 2019-03-20 01:54:16 +02:00
Ștefan Talpalaru 002c6bbb38
assert() -> doAssert()
and an explicit "test" task for the sake of nimble.sh
2019-03-14 00:39:10 +01:00
Zahary Karadjov a9d565f8e0 Tests with distinct types 2019-03-13 23:20:58 +02:00
Zahary Karadjov 49c07ca512 Handle the latest OutputStream changes 2019-03-11 11:39:19 +02:00
Zahary Karadjov daa60be371 Handle objects without fields gracefully 2018-12-28 03:02:20 +02:00
Zahary Karadjov 6d3fae7df2 Json deserialisation; Tests 2018-12-19 12:47:53 +02:00