【问题标题】:How to build JSON programmatically in Angular 2如何在 Angular 2 中以编程方式构建 JSON
【发布时间】: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


    【解决方案1】:

    你能看看,我在这里是不是正确的:

    我相信,您要做的是,从 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  
    

    如果你能赶上漂移,我会带着这个去哪里。

    【讨论】:

    • 文本区域正在使用ngFor* 渲染,请参阅编辑
    猜你喜欢
    • 2015-10-09
    • 2018-09-28
    • 2010-09-10
    • 2017-12-13
    • 1970-01-01
    • 2022-12-15
    • 2012-05-05
    • 1970-01-01
    • 2017-05-29
    相关资源
    最近更新 更多