Mass Update certain key-values recursively in huge, complex JSON string trees without using JSON.parse().
Tags: javascript, json
Published: 2020-01-12 12:55:59

https://github.com/Andrew-Kang-G/json-knife


Mass Update certain key-values recursively in huge, complex JSON string trees
without using JSON.parse() & self-calling function.

Zero dependency, 7KB

## Syntax & Usage
Very simple to use. Now we are going to set all 'Mike{[Gentleman]}' to null in the sample JSON string.

```javascript

    /**
     * @brief
     * Mass Update certain key-values recursively in huge, complex JSON string trees
     * @author Andrew Kang
     * @param original string required (must be JSON string)
     * @param key string required
     * @param value string or boolean or number or null required
     * @return string
     */
    
      // IMPORTANT : the variable 'original' should be valid JSON.
      // You can test your JSON string source like here. 
      // https://jsonformatter.curiousconcept.com/
    
    var result = Pattern.sculptJson(original, 'Mike{[Gentleman]}', null);
    
    // You can convert the result string to an object type.
    var resultObj = JSON.parse(result);
    
```
**[Original source]**

var original =
```json
{
        "prob\"lems": [{
            "classes": [{
                "medications": [{
                    "medicationsClasses": [{
                        "Mike {[Gentleman]}": [{
                            "associatedDrug": [{
                                "name": "asprin",
                                "dose": 35.3,
                                "strength": "500 mg",
                                "className" : false
                            }],
                            "Mike {[Gentleman]}": [{
                                "name": "somethingElse",
                                "dose": "",
                                "strength": "500 mg",
                                "friends": {
                                    "self": {
                                        "Mike {[Gentleman]}": "33",
                                        "names": ["aa"]
                                    }
                                }
                            }]
                        }],
                        "Judy": [{
                            "associatedDrug": [{
                                "name": "asprin",
                                "dose": "",
                                "strength": "500 mg",
                                "friends": ["Mike {[Gentleman]}"]
                            }],
                            "associatedDrug#2": [{
                                "name": "somethingElse",
                                "dose": "",
                                "strength": "500 mg"
                            }],
                            "friends": [{"Mike {[Gentleman]}": null}, {"Mike {[Gentleman]}": [["c[ 3\"5ool", 35], ["ca],[1\"3lm"], 53]}, "Jackson", "Mike {[Gentleman]}"]
                        }]
                    }]
                }],
                "classNameMissed": [{
                    "Mike {[Gentleman]}": "missing_value"
                }]
            }],
            "className": [{}]
        }]
    }
```
**[Result]** - string type

```json
{
        "prob\"lems": [{
            "classes": [{
                "medications": [{
                    "medicationsClasses": [{
                        "Mike {[Gentleman]}": null,
                        "Judy": [{
                            "associatedDrug": [{
                                "name": "asprin",
                                "dose": "",
                                "strength": "500 mg",
                                "friends": ["Mike {[Gentleman]}"]
                            }],
                            "associatedDrug#2": [{
                                "name": "somethingElse",
                                "dose": "",
                                "strength": "500 mg"
                            }],
                            "friends": [{"Mike {[Gentleman]}": null}, {"Mike {[Gentleman]}": null}, "Jackson", "Mike {[Gentleman]}"]
                        }]
                    }]
                }],
                "classNameMissed": [{
                    "Mike {[Gentleman]}": null
                }]
            }],
            "className": [{}]
        }]
    }
```