Я пытаюсь создать JSON программно для метода POST
без жесткого кодирования имени ключа, поскольку это может быть что угодно.Как программировать JSON в Angular 2
В настоящий момент я жестко кодирую JSON, который подходит для тестирования, по крайней мере, я знаю, что мой метод POST
работает правильно.
Для тестирования это мой текущий JSON, но он может иметь несколько уровней.
var jsonFormObj = {
'Name': value,
'Number': value,
'Url': value,
'Children': [
{
'ChildName': value,
'ChildNumber': value
}
]
}
С многоуровневого OBJ
var jsonFormObj = {
'Name': value,
'Number': value,
'Url': value,
'Children':{
'ChildName': value,
'ChildNumber': value,
'Addresses' : [{
'Line 1': value,
'Line 2': value..
}]
}
}
Textarea ngFor
HTML:
<div *ngFor="let inputSearch of searchBoxCount" class="col-sm-12">
<textarea name="{{inputSearch.name}}" id="{{inputSearch.name}}" rows="2" [(ngModel)]="inputSearch.value" [class.hidden]="checkedUsers.indexOf(inputSearch.name) >= 0"></textarea>
</div>
я попробовал этот подход, однако он создал плоский JSON, чем вложенные как в примере выше.
let jsonData = {}; let jsonFormObj;
this.searchBoxCount.forEach((inputSearch: any) => {
if (inputSearch.value != null && (inputSearch.value != "")) {
let inputValues: any = inputSearch.value;
var dataNameElement = inputSearch.name;
jsonData[dataNameElement] = inputSearch.value;
}
});
jsonFormObj.push(jsonData);
Rendering TextArea:
var searchParams = [];
for (var key in prop) {
if (prop.hasOwnProperty(key)) {
if (prop[key].type && prop[key].type != 'array') {
console.log("Normal FIELD.. "+ key);
var object = {name: key};
searchParams.push(object);
} else if (prop[key].type && prop[key].type === 'array') {
console.log("ARRAY HERE TO SHOW 'ADD' BUTTON.. "+ key);
this.arrObj = true;
}else if (!prop[key].type) {
console.log("NOT FIELD, BUT OBJECT.. "+ key);
let objKeyProp = apiDefinition[prop[key].$ref.split('/')[2]].properties
for(var obj in objKeyProp){
if(objKeyProp.hasOwnProperty(obj)){
object = {name: obj};
searchParams.push(object);
}
}
}
}
}
this.searchBoxCount = searchParams;
Результат выше:
Как я могу создать такой JSON программно? поскольку hardcoding не является мнением вообще, поскольку objs различны каждый POST
API.
Желаемый результат, это работает, потому что я жестко закодировал JSON.
а текстовое поле визуализируется с помощью 'ngFor *' см. Edit – nCore