[英]How to build JSON programmatically in Angular 2
我正在尝试以编程方式为POST
方法创建一个JSON,而无需对密钥名称进行硬编码,因为它可以是任何东西。
目前我正在硬编码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);
渲染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? 因为硬编码根本不是一种意见,因为每个POST
API都有不同的obj。
期望的结果,这是有效的,因为我硬编码了JSON。
你能看出我在这里是否正确:
我相信,你要做的是,从HTML表单中获取数据并以数组的形式存储它们,然后将其推送到json对象中。 如果是这样,那么你将永远得到一个扁平的JSON结构。 为了获得动态嵌套JSON结构,您必须根据您的设计在表单中设计ng-model。
formObject.name
formObject.number
formObject.url
formObject.Children.ChildName
formObject.Children.ChildNumber
formObject.Children.Adresses.Line1
formObject.Children.Adresses.Line2
如果你能抓住一个漂移,我会在这里。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.