I have the following JSON object that has been read from a url stream:
**{“chatId”:“a74G5k329”,“initialMessage”:{“explanation”:“I chose the chords A, E, D, and A for a standard rock progression. These chords are commonly used in rock music and create a powerful and energetic sound. The progression follows a I-IV-V-I pattern, which is a classic choice for rock music. The key of A Major provides a good balance between brightness and richness. Enjoy rocking out with these chords!”,“midiDataUri”:“data:audio/midi;base64,TVRoZAAAAAYAAAABAIBNVHJrAAACnQD/UQMHoSAA/wYFQSAoSSkAkC1AAJAtQACQMUAAkDRAAJA5QACQPUAAkEBAAJBFQACQSUCEAIAtQACALUAAgDFAAIA0QACAOUAAgD1AAIBAQACARUAAgElAAP8GBUUgKFYpAJAoQACQKEAAkCxAAJAvQACQNEAAkDhAAJA7QACQQEAAkERAhACAKEAAgChAAIAsQACAL0AAgDRAAIA4QACAO0AAgEBAAIBEQAD/BgZEIChJVikAkCZAAJAmQACQKkAAkC1AAJAyQACQNkAAkDlAAJA+QACQQkCEAIAmQACAJkAAgCpAAIAtQACAMkAAgDZAAIA5QACAPkAAgEJAAP8GBUEgKEkpAJAtQACQLUAAkDFAAJA0QACQOUAAkD1AAJBAQACQRUAAkElAhACALUAAgC1AAIAxQACANEAAgDlAAIA9QACAQEAAgEVAAIBJQAD/BgVBIChJKQCQLUAAkC1AAJAxQACQNEAAkDlAAJA9QACQQEAAkEVAAJBJQIQAgC1AAIAtQACAMUAAgDRAAIA5QACAPUAAgEBAAIBFQACASUAA/wYFRSAoVikAkChAAJAoQACQLEAAkC9AAJA0QACQOEAAkDtAAJBAQACQRECEAIAoQACAKEAAgCxAAIAvQACANEAAgDhAAIA7QACAQEAAgERAAP8GBkQgKElWKQCQJkAAkCZAAJAqQACQLUAAkDJAAJA2QACQOUAAkD5AAJBCQIQAgCZAAIAmQACAKkAAgC1AAIAyQACANkAAgDlAAIA+QACAQkAA/wYFQSAoSSkAkC1AAJAtQACQMUAAkDRAAJA5QACQPUAAkEBAAJBFQACQSUCEAIAtQACALUAAgDFAAIA0QACAOUAAgD1AAIBAQACARUAAgElAAP8vAA==”,“chords”:[{“name”:“A”,“romanNumeral”:“I”},{“name”:“E”,“romanNumeral”:“V”},{“name”:“D”,“romanNumeral”:“IV”},{“name”:“A”,“romanNumeral”:“I”},{“name”:“A”,“romanNumeral”:“I”},{“name”:“E”,“romanNumeral”:“V”},{“name”:“D”,“romanNumeral”:“IV”},{“name”:“A”,“romanNumeral”:“I”}],“bpm”:120,“key”:“A Major”,“durationInSeconds”:16}}
Here is the code I’m using to parse the object:
const juce::String stringResponse = stream->readEntireStreamAsString();
juce::String decoded = “False”;
int arsize;
if( juce::JSON::parse(stringResponse, parsedResponse).wasOk() ) {
juce::String midiData = parsedResponse["initialMessage"]["midiDataUri"];;
midiBase64 = midiData.replace("data:audio/midi;base64,","");
if(juce::Base64::convertFromBase64(midi, midiBase64)){
decoded = "True";
}
juce::String chatExplanation = parsedResponse["initialMessage"]["explanation"];
juce::Array chatChords = parsedResponse["initialMessage"].getProperty("chords",juce::var()).getArray();
if (chatChords.isEmpty()){
std::cout << "nothing here" << std::endl;}
else{
std::cout << "something here" + std::to_string(chatChords.size()) << std::endl;
};
I’m a little new to working with JUCE and C++. I can see that chatChords is an array with a single element, but I was expecting it to be an array with 8 JSON objects. Can someone help me figure out what I am doing wrong?