Data not updated in real time
The reasons it's not updating is because your code is sitting in the loop while (finished == false) {...} waiting for more json to arrive.

Try replacing the while loop with something along these lines:

  while ((finished == false) || Serial.available()) {
   if (Serial.available()) {
    const char in = Serial.read();
    if (in == '{')  {
        response = "";  // Blank the string
        begin = true;
        finished = false;
    } 
    if (begin)
        response += (in); // Only write if within the {}
    if (in == '}') { 
        begin = false;   // Prevent any chars between } and { leaking through.
        finished = true;
    }
   }
  }


and change the initial variable declarations at the start of the code to set finished to false:

// personally I always put each variables on a separate lines when setting initial values.
bool begin = false;
bool finished = false;


This will block until it's received at least 1 json string. After that it will check if there is new data on the serial port, if there is it will block until it's received the whole string, it there isn't any data waiting it will exit.

Oh and your response string is currently including the { } characters at the start and end, this contradicts your comments which imply that it doesn't.