【发布时间】:2016-10-25 10:50:14
【问题描述】:
我正在尝试以编程方式为 POST 方法创建一个 JSON,而无需对密钥名称进行硬编码,因为它可以是任何东西。
目前我正在对 JSON 进行硬编码,这对于测试来说很好,至少我知道我的 POST 方法工作正常。
为了测试,这是我当前的 JSON 的样子,但它可以有多个级别。
var jsonFormObj = {
'Name': value,
'Number': value,
'Url': value,
'Children': [
{
'ChildName': value,
'ChildNumber': value
}
]
}
带有多级对象
var jsonFormObj = {
'Name': value,
'Number': value,
'Url': value,
'Children':{
'ChildName': value,
'ChildNumber': value,
'Addresses' : [{
'Line 1': value,
'Line 2': value..
}]
}
}
文本区域ngForHTML:
<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);
渲染文本区域:
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 进行了硬编码。
【问题讨论】:
标签: javascript json angular