【问题标题】:Convert Json String to json Arrays in angular 6以角度 6 将 Json 字符串转换为 json 数组
【发布时间】:2019-01-16 20:00:00
【问题描述】:

您好,我想将 Json 字符串中的 RestController 响应转换为 json 数组,这是我在控制台中打印的 json 数组字符串。

'{"Impressions":["Budget","CTR","Campaign","Campaign state","Clicks","Conv. rate"],"Clicks":["Budget","CTR","Campaign","Campaign state","Clicks","Conv. rate"],"Revenue":["Budget","CTR","Campaign","Campaign state","Clicks","Conv. rate"]}'

我想将它转换为 json 数组以便我可以迭代它,

我的要求是迭代数组并将键打印为标签,将值打印为 slect 选项

例子:

印象作为标签,“预算”、“点击率”、“广告系列”、“广告系列状态”、“点击次数”、“转化率”作为选择选项。

这是我的迭代代码

<div>
   <form *ngFor ="let map of mapper">
      <mat-form-field>
         <mat-select placeholder="{{map}}">
            <!--<mat-option>None</mat-option>-->
             <mat-option *ngFor="let option of map"  [value]="option"> 
                {{option}}
             </mat-option>
         </mat-select>
      </mat-form-field>
    </form>
</div>

我的 .ts 类

this.clientService.getHeaders().subscribe(
      (res) => {
          console.log(res);
          let resSTR = JSON.stringify(res);
          let resJSON = JSON.parse(resSTR);
          this.mapper=Array.of(resJSON._body);
          console.log(this.mapper);
          this.ismapped=false;
      }
);

【问题讨论】:

  • 问题是什么?
  • @Venomy 我想将 Json 字符串转换为用户定义的 Object 类类型的 Json 数组,并使用该数组在 *ngfor 中进行迭代
  • 你的意思是 JSON 字符串到 JavaScript 数组。没有 JSON 数组/对象之类的东西。

标签: javascript json angular typescript angular6


【解决方案1】:
this.clientService.getHeaders().subscribe(
  (res) => {
      console.log(res);
      let result= <any>res;
      this.mapper= result;
      console.log(this.mapper);
      this.ismapped=false;
  }
);

无需进行字符串化然后解析。只需将响应转换为 any,然后您就可以将其用作数组。

【讨论】:

    【解决方案2】:
    let str = '{"Impressions":["Budget","CTR","Campaign","Campaign state","Clicks","Conv. rate"],"Clicks":["Budget","CTR","Campaign","Campaign state","Clicks","Conv. rate"],"Revenue":["Budget","CTR","Campaign","Campaign state","Clicks","Conv. rate"]}'
    
    Object.keys(JSON.parse(str)).map(arr => {
      return `${arr}: ${JSON.parse(str)[arr].join(', ')}`;
    });
    

    在 return 语句中执行您想要的任何逻辑。将其作为字符串、数组或对象返回。

    【讨论】:

    • 嗨,Alex 感谢您的快速响应,我创建了一个模型 MapHeader export class MapHeader { public Budget: string;公共点击率:字符串;公共活动:字符串;公共订单:字符串; public Clicks: string;} 我想将数组分配给我为此编写的模型 this.mapper= Object.keys(JSON.parse(str)).map(arr => { return ${arr}: ${JSON.parse(str)[arr].join(', ')}; });这会引发错误类型'string []'不可分配给类型'MapHeader []'。这样我就可以在 html 中使用映射器进行 *ngfor 循环
    • 你确定你需要在这里上课吗?我觉得接口就够了 export interface MapHeader { Budget: string;点击率:字符串;活动:字符串;订单:字符串;点击次数:字符串; }
    • 我对 Angular 完全陌生,我不明白你指的是什么。你能解释一下吗?
    • 我尝试使用字符串 [] 并且能够在再次迭代时获取数组我遇到了一个问题找不到不同的支持对象“广告系列:预算、点击率、广告系列、广告系列状态、点击次数、转化次数。 '字符串'类型的速率'。 NgFor 只支持绑定到 Arrays 等 Iterables。
    • 如果你想设置像 MapHeader[] 这样的自定义类型,那么使用接口,而不是类:typescriptlang.org/docs/handbook/interfaces.html 用简单的

      {{element 测试你的数据| json}}

      然后将数据转换为所需的格式
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-27
    • 2013-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多