繁体   English   中英

如何在Angular 2中以编程方式构建JSON

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM