You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I am having an unexpected behavior when parsing, at least as far as I can understand the documentation.
When a required @jsonMember field in class is not present on Json, I expected to have a parse error.
Instead, I apparently got the field either as undefined or not present.
I tested versions from 1.5.0 to 1.8.0 and got the same results:
import "reflect-metadata";
import { jsonMember, jsonObject, TypedJSON } from "typedjson";
@jsonObject
class Response {
@jsonMember
// have to mark it with ! because we have no constructor
id!: number;
@jsonMember
// have to mark it with ! because we have no constructor
firstName!: string;
@jsonMember
// have to mark it with ! because we have no constructor
lastName!: string;
}
const serializer = new TypedJSON(Response);
serializer.config({
errorHandler: e => { throw e; },
});
const resp = serializer.parse(`{
"id": 1,
"firstName": "a",
"lavstName": "xx",
"bla": "aaa"
}`);
console.log(resp);
As you can see, we expect a lastName field in the class but JSON has a lavstName, so the @jsonMember lastName is not provided.
I expected an error, but instead I got a Response class with id and firstName set, lastName not set.
The output of this script for me is this:
I have tried to remove the ! of fields and to create an assignment constructor, with the same response.
To summarize ... my use case is simple:I want to make sure that a given JSON matches the specs of a given class, by specs I mean that all fields listed in the class are present and have the same types also on JSON, although JSON can perfectly contain more fields than the class.
Am I doing something wrong or this library doesn't help in these cases?
The text was updated successfully, but these errors were encountered:
Hello,
I am having an unexpected behavior when parsing, at least as far as I can understand the documentation.
When a required @jsonMember field in class is not present on Json, I expected to have a parse error.
Instead, I apparently got the field either as undefined or not present.
I tested versions from 1.5.0 to 1.8.0 and got the same results:
As you can see, we expect a lastName field in the class but JSON has a lavstName, so the @jsonMember lastName is not provided.
I expected an error, but instead I got a Response class with id and firstName set, lastName not set.
The output of this script for me is this:
I have tried to remove the ! of fields and to create an assignment constructor, with the same response.
To summarize ... my use case is simple:I want to make sure that a given JSON matches the specs of a given class, by specs I mean that all fields listed in the class are present and have the same types also on JSON, although JSON can perfectly contain more fields than the class.
Am I doing something wrong or this library doesn't help in these cases?
The text was updated successfully, but these errors were encountered: