2017-06-15 1 views
3

Angular 4アプリから[POST] RESTサービスを呼び出す必要があります。残りのサービスでは、リクエストの本文にJSONが必要です。角4 - JSONをモデルにマップする(逆も同様)

私はいくつかのユーザ入力に基づいて、角度に構築していますJSONは私のコードで

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

ようになり、私は私が私ができる期待していた

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

として、このJSONを作成しておりますjson構造が確実に守られるように、この構造のモデルを作成します。 JSONを構築するときに、私は先に行って、

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; 
    } 
} 

以下のようにmodel.tsファイルを作成する私の考えでは、このモデルを使用していた -

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のクラス名とクラスのフィールド名が一致しません。したがって、angleはval型がvalTypeと同じであることを知らないでしょう。 .tsファイルの変数名は、 ' - 'のために有効な変数名ではないため、val型として保持することはできません。

このようなシナリオでは、何が最善のアプローチですか?私はクラスについて心配することなくjsonを構築すべきか、この種の強い型付けを得る別の方法がありますか?

答えて

3

投稿中にJson typescript decoraterを使用してモデルをシリアル化できます。モデル

var json = serialize(jsonSubpart); 
を掲示しながら、

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

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

モデルを記入します。たとえば

は、いつものようにクラスを宣言します

関連する問題