this post was submitted on 30 Jun 2024
155 points (93.3% liked)

Programmer Humor

32410 readers
581 users here now

Post funny things about programming here! (Or just rant about your favourite programming language.)

Rules:

founded 5 years ago
MODERATORS
 

Meme transcription: Panel 1. Two images of JSON, one is the empty object, one is an object in which the key name maps to the value null. Caption: “Corporate needs you to find the difference between this picture and this picture”

Panel 2. The Java backend dev answers, “They’re the same picture.”

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 26 points 4 months ago (21 children)

I don't get it. The key still gets declared, but it's value is null. "name" in an empty object would return undefined, not null, correct?

(Yes, this joke whooshed, but I am curious now.)

[–] [email protected] 4 points 4 months ago (9 children)

Yeah, I'm also confused. If an attribute is null, I would prefer to simply not serialize it.

I'm sure there are edge cases where someone might prefer to include null attributes, but generally they should be treated the same either way.

[–] [email protected] 3 points 4 months ago (3 children)

Imagine you're writing a CRUD API, which is pretty common.
If null attributes aren't included in the payload, and someone does an update (typically a PATCH), how do you know which fields should be nulled out and which should be ignored?

I agree for many cases the two are semantically equivalent, but it's common enough to not have them be equivalent that I'm surprised that it causes arguments

[–] [email protected] 1 points 4 months ago* (last edited 4 months ago) (1 children)

For an API there should always be a version parameter/endpoint, imho.

Edit for further context: Ideally, a parameter.

[–] [email protected] 2 points 4 months ago* (last edited 4 months ago) (1 children)

I wasn't taking about new fields. I was talking about resource partial updates (eg PATCH, or commonly the U in CRUD).

If you just want to update a single field on a resource with 100 fields, rather than GETting the entire resource, updating the single field, and PUTting whole thing back, just do a PATCH with the single field.

Likewise if you're POSTing a resource that has nullable fields, but the default value isn't null, how do you indicate that you want the default value for a given field? Do you have to first query some metadata API? That doesn't seem ideal, when this existing pattern exists

[–] [email protected] 3 points 4 months ago* (last edited 4 months ago)

Those are two very fair points - I agree.

load more comments (1 replies)
load more comments (6 replies)
load more comments (17 replies)