Я пытался добавить новые поля в конце package.json. Я не могу использовать
- JSON.parse
- добавить новый элемент
- JSON.stringfy
подход, потому что он дает мне однострочный вывод. Я не хочу изменять другие строки в package.json в git diff. Мне нужно только увидеть новое свойство, вот и все.
Поэтому я попытался найти последнюю строку после получения package.json в строковом формате. Это шаги
- Удалить закрывающую фигурную скобку
- Найти последнюю строку (обрезать пустые пробелы и ввести)
- Добавить запятую
- Добавить новое свойствона следующей строке
- Добавить закрывающую фигурную скобку
Это работает, однако json также может содержать число, ноль, логические значения (true / false) в и. Как я могу обнаружить это, если это так? Также, пожалуйста, дайте мне знать любой другой тип, который может иметь json.
Первый подход благодаря вкладу @ jonrsharpe работает как шарм.
packageJSON = `{
"abc": "def",
"qwe": true
}
`
function addNewField(packageJSON){
const obj = JSON.parse(packageJSON)
obj["newField"] = {
z: "zzz",
x: 100
}
return JSON.stringify(obj, null, 2)
}
const resultStr = addNewField(packageJSON)
/*
"{
"abc": "def",
"qwe": true,
"newField": {
"z": "zzz",
"x": 100
}
}"
*/