https://github.com/patternhelloworld/json-knife
A Regex Engine to Parse and Apply Bulk Changes to a JSON String Without Using 'JSON.parse()' for Deserialization
https://github.com/patternhelloworld/json-knife
javascript json json-parser json-parsing json-schema json-update nested-set parse parser serialization
Last synced: 5 months ago
JSON representation
A Regex Engine to Parse and Apply Bulk Changes to a JSON String Without Using 'JSON.parse()' for Deserialization
- Host: GitHub
- URL: https://github.com/patternhelloworld/json-knife
- Owner: patternhelloworld
- License: mit
- Created: 2020-01-12T12:39:41.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2022-12-11T20:13:17.000Z (almost 3 years ago)
- Last Synced: 2025-05-25T06:08:32.179Z (7 months ago)
- Topics: javascript, json, json-parser, json-parsing, json-schema, json-update, nested-set, parse, parser, serialization
- Language: JavaScript
- Homepage:
- Size: 1.21 MB
- Stars: 28
- Watchers: 2
- Forks: 2
- Open Issues: 15
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# json-knife [](https://travis-ci.org/Andrew-Kang-G/json-knife) [](https://www.npmjs.com/package/json-knife) [](https://www.jsdelivr.com/package/gh/Andrew-Kang-G/json-knife)
## Overview
Mass replace specific properties value with a new value recursively in huge, complex and deep JSON string
with a robust regular expression based engine.
Zero dependency, 7KB
## Installation
For ES5 users,
``` html
```
For ES6 npm users, run 'npm install --save json-knife' on console.
``` html
import Pattern from 'json-knife';
```
## 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": [{}]
}]
}
```
Please inform me of the source related things by leaving issues on Github or emailing me at studypurpose@naver.com.