json-class-npm
v1.0.801
Published
This npm package provides functionality to convert JSON objects into their respective class instances. It leverages TypeScript decorators and a class registry to manage and instantiate classes dynamically based on JSON input.
Downloads
6
Maintainers
Readme
JSON to Class Converter
This npm package provides functionality to convert JSON objects into their respective class instances. It leverages TypeScript decorators and a class registry to manage and instantiate classes dynamically based on JSON input.
Features
- Register classes with a unique name.
- Convert JSON objects into instances of registered classes.
- Handle nested objects and arrays within JSON.
Installation
To install the package, use npm:
npm install json-class-npm
Usage
Registering Classes
First, you need to register your classes using the @RegisterClass
decorator.
import { RegisterClass, parseJson } from 'json-class-npm';
@RegisterClass('C')
class C {
constructor(public propC: string) {}
getProp() {
return "inside c " + this.propC;
}
}
@RegisterClass('B')
class B {
constructor(public propB: number) {}
}
@RegisterClass('A')
class A {
constructor(public propA: string, public objB: B, public arrC: C[]) {}
getA() {
return this.propA;
}
getB() {
console.log("objB");
}
}
Converting JSON to Class Instances
To convert JSON objects into instances of registered classes, use the parseJson
function.
const jsonString = {
__class: 'A',
propA: 'Hello',
objB: {
__class: 'B',
propB: 42
},
arrC: [
{
__class: 'C',
propC: 'World'
},
{
__class: 'C',
propC: '!'
}
]
};
const objA: A = parseJson(jsonString);
console.log(objA.arrC[0].getProp()); // Output: inside c World
Example
import { RegisterClass, parseJson } from 'json-class-npm';
@RegisterClass('C')
class C {
constructor(public propC: string) {}
getProp() {
return "inside c " + this.propC;
}
}
@RegisterClass('B')
class B {
constructor(public propB: number) {}
}
@RegisterClass('A')
class A {
constructor(public propA: string, public objB: B, public arrC: C[]) {}
getA() {
return this.propA;
}
getB() {
console.log("objB");
}
}
// Example usage
const jsonString = {
__class: 'A',
propA: 'Hello',
objB: {
__class: 'B',
propB: 42
},
arrC: [
{
__class: 'C',
propC: 'World'
},
{
__class: 'C',
propC: '!'
}
]
};
const objA: A = parseJson(jsonString);
console.log(objA.arrC[0].getProp()); // Output: inside c World
API
@RegisterClass(name: string)
Decorator to register a class with a unique name.
name
: The unique name to register the class.
parseJson<T>(json: any): T
Function to parse a JSON object and convert it into an instance of the registered class.
json
: The JSON object to parse.
Reach Out
For more information, you can reach out to me through:
License
This project is licensed under the MIT License.