extended-json
v13.2.0
Published
extended json with date using reviver
Readme
About
JSON with Date support. stringify is plain JSON.stringify (dates already serialize to ISO strings through toJSON); parse adds a reviver turning ISO-8601 UTC strings back into Date instances.
This is the wire format used between liwi-resources-client and liwi-resources-server.
Install
npm install --save extended-jsonUsage
import { parse, stringify } from "extended-json";
const json = stringify({
label: "task",
created: new Date("2020-01-01T10:00:00Z"),
});
// '{"label":"task","created":"2020-01-01T10:00:00.000Z"}'
const value = parse(json);
value.created instanceof Date; // trueencode / decode are aliases of stringify / parse:
import { decode, encode } from "extended-json";API
stringify(value, replacer?, space?): string
Same signature and behaviour as JSON.stringify.
parse<Value = ExtendedJsonValue>(text, reviver?): Value
Parses text and revives every string matching YYYY-MM-DDTHH:mm:ss(.sss)Z as a Date (built with Date.UTC). A custom reviver runs after the internal one, so it receives the already-revived value.
const value = parse<{ created: Date }>(
'{"created":"2020-01-01T10:00:00.000Z"}',
);ExtendedJsonValue
type ExtendedJsonValue =
| Date
| ExtendedJsonRecord
| ExtendedJsonValue[]
| boolean
| number
| string
| null
| undefined;Caveats
- Only UTC (
Z-suffixed) ISO strings are revived; offsets like+02:00are left as strings. - Any string that looks like an ISO-8601 UTC date becomes a
Date, even when it was meant to stay a string.
