4 ms·
Serialization/deserialization can be really gross in something like Java, but TypeScript gives you some really good tools (zod, typebox, etc.) to validate and t
by eropple 4y ago
Serialization/deserialization can be really gross in something like Java, but TypeScript gives you some really good tools (zod, typebox, etc.) to validate and type-guard your inputs that I'm sure could be implemented in Python--if they're not already.
- pbalau 4y agoPydantic will do that for Python.
- eropple 4y agoYeah, I assumed as much. I've only looked at Pydantic in the context of FastAPI, as Python's not really my thing, but it looks really well-thought-out.
- amarant 4y agoIf serialisation is painful in Java, you're doing it wrong. Libraries like Jackson make it entirely painless. I would assume JSON parsing is a solved problem in any typed language.
- eropple 4y agoI've written a lot of code using Jackson and I strongly disagree that it's a solved problem. If you're Java on both ends, it's probably fine, but then your serde style is an implementation detail. And that's great, but if you're not, you are in a bear pit. The lingua franca for JSON specification is JSON Schema, and there is significant impedance mismatch between the standard JSON tools folks use in Java and with JSON Schema as used by most other folks. (Jackson has a nice JSON Schema module for exporting it, but importing/codegen is pretty gross.)
- sixbrx 4y agoI find Java pretty nice for handling JSON serialization/deserialization these days. Just define some records for the expected structure, and Jackson's object mapper handles the rest.
- eropple 4y agoIt's the "defining some records" part that's slow and gritty. JSON is usually an interchange format, and Java class construction is either slow, tedious, and manual, or involves massaging a code generator (which, at least the last time I checked a few months ago, weren't very good in Java).
- vips7L 4y agoI don’t see how declaring a data model class is anymore difficult in Java than another typed language. record Thing(String name, int size, LocalDate when) {} The only way I could see this being easier is to forgo type safety completely.
- eropple 4y agoYou're assuming you only have to define it in one language. JSON is an interchange format. The canonical way to express it is JSON Schema, and the tools are unpleasant in Java. So is dealing with structural typing of polymorphic responses. In an ideal world we wouldn't have those, but we live in this one. These things are just better when you aren't in a nominatively typed language with some pretty crusty assumptions.