7 ms·
What exactly frustrates you about Go's JSON handling? In my experience its among the best in typed languages. Define a struct (or just use an untyped map), opti
by 013a 9y ago
What exactly frustrates you about Go's JSON handling? In my experience its among the best in typed languages. Define a struct (or just use an untyped map), optionally specify json tags for field names, pass it and the json to json.Unmarshal. Go is literally designed for this use case; systems programming, sharing messages between systems. Compared to other typed languages like Rust or Java, its at least as simple, if not simpler.
- aczerepinski 9y agoAgreed. Go is wonderful with JSON. Reasonable defaults and very flexible.
- 3pt14159 9y agoIt might be wonderful now, but I first used Go in 2009 and it was really hard to work with back then, so maybe the OP has a warped view of the current state?
- ccccccccccccc 9y agoThat was almost 9 years ago. Go has changed at a pretty rapid pace since then.
- tigershark 9y agoFrom what I know about go and JSON and what is possible in other languages I would never call it wonderful.
- svs 9y agoTry having a default value for a key in a JSON document that isn't null. In Go, this is pure torture. Then compare with the serde library for Rust. Go's lack of generics makes this kind of use case much harder than reasonable.
- tigershark 9y agoCompare it with F# type providers where you don’t need to generate any struct and you can access the JSON object in a type safe way with autocompletion in your IDE and maybe you will understand what is frustrating...
- deforciant 9y agoHey, I found this tool very useful https://mholt.github.io/json-to-go/ https://mholt.github.io/json-to-go/ when working with large JSON structs :)
- IshKebab 9y agoHow is that possible? You either need to specify the types up front (like Go) or give up on static type safety (like Python). It's impossible to have both.
- actsasbuffoon 9y agoActually, you can have both. Many languages in the ML family (Haskell, F#, etc.) can ensure complete type safety without having to define the shape up-front. Your data comes out of the JSON structure wrapped in a functor, and you can only access it in ways that deal with missing data. It’s hypothetically possible to recreate this approach in Python, but I don’t think it would be Pythonic.
- IshKebab 9y agoThat sounds like how you have to access JSON data dynamically in any statically typed language.
- actsasbuffoon 9y agoBut these other languages wouldn't necessarily remain type-safe. The functor approach doesn't involve any type casting, and null pointer exceptions are impossible.