The DST guide states that field names should use snake_case and not other naming conventions, such as camelCase (dromedary or bactrian) or kebab-case (/spinal-case/lisp-case/dash-case). This isn't very conducive to hierarchical fields, such as dynamic lists of compound items (i.e. items with multiple fields), as only one separator is available for both path components and to join compound names. I've been considering a couple different solutions, and would especially like to hear from other DST authors, with an eye towards possibly creating a shared naming scheme for dynamic fields. I suspect static hierarchical field names wouldn't be seen in the wild (since static fields generally don't need to be named hierarchically), but it's important to consider the possibility.
Note that here, "static" and "dynamic" are in relation to the DSTs. Static fields are those that are defined by the DST author in the HTML template, while "dynamic" refers to fields that may not exist within the HTML template of a DST and are defined by the player (in DSTs that have such a feature). It does not mean "dynamic" as used in "Dynamic Sheet Template" and "Dynamic Sheet Field", which are only dynamic in respect to Obsidian Portal.
Before going into solutions, it's helpful to consider use-cases, as long as we don't limit ourselves to these cases (even subconsciously) when considering the solutions. Some to consider:
It looks like you're new here. If you want to get involved, click one of these buttons!