JSONPath doesn't produce a valid JSON string?

You are right, that is a difficult problem to solve in openHAB.
The Items would all get updated from the same MQTT payload, but the updating is one-at-a-time. For a few milliseconds, “first” Item will be “new” value while “last” Item is still “old” value. So there is risk that triggering a rule from one Item can process values from different payloads. You’ve no real control over which is first and last, to choose the best trigger.

If it is not time-critical, a simple 100mS delay at the start of a rule triggered from any Item will ensure everything has “caught up”.

Or there is a clever “synchronise” technique here, its probably beyond what you really need though

Or of course, process the original payload in your rule as a single entity, just as you started out doing.
In that case I would not bother pre-processing it to try to extract a chunk, just work with the whole payload in the rule.