Skip to content

Conversation

@daleonov
Copy link

@daleonov daleonov commented Jan 7, 2022

Had a few StringPairArray's I had to convert to JSON, was surprised JUCE can't do that yet. I used JSONFormatter stuff as much as possible, so it should behave nicely. Example:

    juce::StringPairArray data;

    DBG("*** Empty array ***");
    DBG("Single line" << juce::newLine << juce::JSON::toString(data, true));
    DBG("Multiple lines" << juce::newLine << juce::JSON::toString(data, false));

    DBG(juce::newLine << "*** One item ***");
    data.set("Key1", "Value1");
    DBG("Single line" << juce::newLine << juce::JSON::toString(data, true));
    DBG("Multiple lines" << juce::newLine << juce::JSON::toString(data, false));

    DBG(juce::newLine << "*** A bunch of items ***");
    data.set("Key2", "Value2");
    data.set("Key3", "Value\that\needs\escaping");
    DBG("Single line" << juce::newLine << juce::JSON::toString(data, true));
    DBG("Multiple lines" << juce::newLine << juce::JSON::toString(data, false));

Output:

*** Empty array ***
Single line
{}
Multiple lines
{}

*** One item ***
Single line
{"Key1": "Value1"}
Multiple lines
{
  "Key1": "Value1"
}

*** A bunch of items ***
Single line
{"Key1": "Value1", "Key2": "Value2", "Key3": "Value\\that\\needsescaping"}
Multiple lines
{
  "Key1": "Value1",
  "Key2": "Value2",
  "Key3": "Value\\that\\needsescaping"
}

It can also live as StringPairArray method, but I think you prefer to keep all JSON stuff in one class. Also, noticed weird string escaping behaviour (see how one backslash has disappeared in last item?), but that's another matter.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant