簡體   English   中英

Angular 4 - 將JSON映射到模型,反之亦然

[英]Angular 4 - Map JSON to model and vice versa

我需要從Angular 4應用程序調用[POST] REST服務。 其余服務需要請求正文中的JSON。

我在Angular中構建的JSON,基於一些用戶輸入看起來像

{
    "val-type": "prop",
    "val-name": "prop1",
    "op-ter": "DIFF",
    "value": "Unknown",
    "match-twice": false,
    "case-sensitive": false
}

在我的代碼中,我正在創建這個json

let jsonSubpart = {
      "val-type": userInput.valtype,
      "val-name": userInput.valname,
      "op-ter": userInput.opter,
      "value": userInput.val,
      "match-twice": false,
      "case-sensitive": false
    }

我希望我可以為這個結構創建一個模型,以確保遵守json結構。 所以,我繼續創建了一個model.ts文件,如下所示

export class SubPart {
    public valType: string;
    public valName: string;
    public opTer: string;
    public value: string;
    public matchTwice: boolean = false;
    public caseSensitive: boolean = false;

    constructor(valType: string, valName: string, opTer: string, value: string,
        matchTwice: boolean, caseSensitive: boolean) {
        this.valType=valType;
        this.valName= valName;
        this.opTer=opTer;
        this.value = value;
        this.matchTwice=matchTwice;
        this.caseSensitive = caseSensitive;
    }
}   

我的想法是在構建json時使用這個模型 -

import { Subpart} from './subpart.model.ts';

let jsonSubpart: Subpart = {
      "val-type": userInput.valtype,
      "val-name": userInput.valname,
      "op-ter": userInput.opter,
      "value": userInput.val,
      "match-twice": false,
      "case-sensitive": false
    }

但是,這不起作用,因為json和類中的字段名稱不匹配。 因此,angular不會知道val-type與valType相同。 我不能將.ts文件中的變量名保存為val-type,因為它不是有效的變量名,因為' - '。

想聽聽專家們在這種情況下最好的方法是什么? 我應該在不擔心課程的情況下構建json,還是有另一種方法來獲得這種強類型?

您可以使用Json打字稿decorater在發布時序列化您的模型。

例如,像往常一樣聲明類:

export class SubPart {
    @JsonProperty('val-type')
    public valType: string;
}

填寫模型

  let jsonSubpart: Subpart = {
     valType: userInput.valtype
  }

並在發布模型時

 var json = serialize(jsonSubpart);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM