1.0.0-alpha.2 • Published 9 months ago
@klave/as-json v1.0.0-alpha.2
Installation
npm install json-as@1.0.0-alpha.2Add the --transform to your asc command (e.g. in package.json)
--transform json-asAlternatively, add it to your asconfig.json
{
// ...
"options": {
"transform": ["json-as"]
}
}If you'd like to see the code that the transform generates, run with JSON_DEBUG=true
Usage
import { JSON } from "json-as";
// @json or @serializable work here
@json
class Vec3 {
x: f32 = 0.0;
y: f32 = 0.0;
z: f32 = 0.0;
}
@json
class Player {
@alias("first name")
firstName!: string;
lastName!: string;
lastActive!: i32[];
// Drop in a code block, function, or expression that evaluates to a boolean
@omitif((age) => age < 18)
@omitif('this.age <= 0')
age!: i32;
@omitnull()
pos!: Vec3 | null;
isVerified!: boolean;
}
const player: Player = {
firstName: "Emmet",
lastName: "West",
lastActive: [8, 27, 2022],
age: 23,
pos: {
x: 3.4,
y: 1.2,
z: 8.3
},
isVerified: true
};
const stringified = JSON.stringify<Player>(player);
const parsed = JSON.parse<Player>(stringified);Classes can even have inheritance. Here's a nasty example
@json
class Base {}
@json
class Vec1 extends Base {
x: f32 = 1.0;
}
@json
class Vec2 extends Vec1 {
y: f32 = 2.0;
}
@json
class Vec3 extends Vec2 {
z: f32 = 3.0;
}
const arr: Base[] = [
new Vec1(),
new Vec2(),
new Vec3()
];
const serialized = JSON.stringify(arr);
// [{"x":1.0},{"x":1.0,"y":2.0},{"y":2.0,"x":1.0,"z":3.0}]
const parsed = JSON.parse<Base[]>(serialized);You can also add it to your asconfig.json
{
// ...
"options": {
"transform": ["json-as/transform"]
}
}If you use this project in your codebase, consider dropping a star. I would really appreciate it!
Notes
If you want a feature, drop an issue (and again, maybe a star). I'll likely add it in less than 7 days.
Contact
Issues
Please submit an issue to https://github.com/JairusSW/as-json/issues if you find anything wrong with this library
1.0.0-alpha.2
9 months ago
0.9.23
1 year ago
0.9.21
1 year ago
0.8.2
1 year ago
0.5.67-fix.0
2 years ago
0.5.61-fix.0
2 years ago
0.5.61
2 years ago