I think the point is, if json is your data exchange format it could be bad if you let that structure propagate into your application.
so in general you should prefer :-
json => <chosen languages best form for dealing with data>
over json => <chosen languages tools for dealing with json>
Different languages are going to have different mechanisms. Some languages you may abstract from json completely, some languages may natively deal with json, and your persistence layer may deal with json also.
So what you need is a well considered design that takes advantage of your chosen languages philosophy / mechanics, whatever that may be. There is no one way to design anything. The thing to avoid is - not working out how to structure your code to make things easy / appropriate to the task at hand. That path leads to messy code.
I think the point is, if json is your data exchange format it could be bad if you let that structure propagate into your application.
so in general you should prefer :-
json => <chosen languages best form for dealing with data>
over json => <chosen languages tools for dealing with json>
Different languages are going to have different mechanisms. Some languages you may abstract from json completely, some languages may natively deal with json, and your persistence layer may deal with json also.
So what you need is a well considered design that takes advantage of your chosen languages philosophy / mechanics, whatever that may be. There is no one way to design anything. The thing to avoid is - not working out how to structure your code to make things easy / appropriate to the task at hand. That path leads to messy code.