title: Remove keys from anywhere in a JSON string without deserialization
body: <p>Without deserializing and reserializing the following deeply-nested JSON string (if this is possible), how to remove any key with the name "REMOVEME" from any nested level?</p>
  
  <p><strong>Tried:</strong></p>
  
  <p>Reluctantly tried deserializing to <code>JsonObject</code> / <code>LinkedHashMap</code> to traverse the structure with <code>node.remove(e.getKey())</code> on offending keys, but Gson throws concurrent modification exceptions, and Jackson requires full deserialization. </p>
  
  <p>Before:</p>
  
  <pre><code>{
      "a": {
          "REMOVEME" : "unwanted",
          "b": {
              "REMOVEME" : "unwanted",
              "c": {
                  "d": {
                      "REMOVEME" : "unwanted",
                      "something": "default",
                      "e": {
                          "f": {
                              "REMOVEME" : "unwanted",
                              "g": {
                                  "REMOVEME" : "unwanted",        
                                  "h": {
                                      ... ,
  </code></pre>
  
  <p>After:</p>
  
  <pre><code>{
      "a": {
          "b": {
              "c": {
                  "d": {
                      "something": "default",
                      "e": {
                          "f": {
                              "g": {
                                  "h": {
                                      ... ,
  </code></pre>