I've never used Dialogue Designer or any similar editors. I'm guessing they are pretty powerful tools and allow to construct very complex dialogues, that's why the JSON structure is so cumbersome.
You can edit or convert the JSON before importing it into your game. For example, you can straight away get rid of the parent array - remove "[" and "]" from the top and the bottom of JSON string. This way you won't have to add "0." to access any key.
The "nodes" is still an array, so to find a particular dialogue you will have to iterate it, for example:
For Each entry in "nodes"
Compare two values JSON.Get(".node_name")="6291363"
You can create a function for it, which will search the JSON for a particular dialogue id and return the path to it. For example:
JSON Set Path to Functions.FindDialogueByID("6291363")
MyText set text to JSON.Get(".text.ENG")
As the result the text should show "Good for me? Absolutely right - I'm a dog!"
Another option is to convert "nodes" array to a list of objects and maybe simplify JSON by removing all unused keys. You'll either have to do it manually or perhaps create a small tool for it. The resulting JSON may look like this:
{
"dialogue_dog": {
"character": "Player",
"choices": [],
"text": "Hello, I'm a dog!"
},
"dialogue_dog_response1": {
"character": "Player",
"choices": [],
"text": "Good for me? Absolutely right - I'm a dog!"
}
}
This way you could access any dialogue directly by its key name without having to loop through the array. For example "dialogue_dog_response1.text"
By the way, check out this demo, it shows paths to all keys in JSON:
dropbox.com/scl/fi/3lvdqp1x1v57xy0prahrj/JSON-RecursiveRead.c3p