I'm adding schema data/microdata to my web pages. I see that both schema.org and Google they discourage hidden microdata via tags and hiding elements with microdata via style. I can see the reasoning behind the policy; it's liable to misleading/inaccurate/spam data vs visible content.
More is better, except for hidden text. In general, the more content you mark up, the better. However, as a general rule, you should mark up only the content that is visible to people who visit the web page and not content in hidden div's or other hidden page elements.
Typically Google will not display content that isn't visible to the end user. In other words, you generally shouldn't mark up content that is not visible to users.
The meta tag should not be used to hide content that is not visible to users in any form, since it might create misleading or deceptive search experience.
Using JSON-LD to define schema(s) seems to be taking trend (opinion), but isn't that a form of hidden data as well?
I guess a fast ruling for me would be that it's fine because the JSON-LD array is (supposed to be) reflective of data that's already visible on the page; it's just another format to distinguish "machine-readable" against non-machine-readable.
Still, though, it's hidden and it's reasonably not identical to live data in many cases. "Sorry I'm late; here are some flowers. I know you said to pick you up at 2016-05-12T19:30."