teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

追加で調べたことを補足

2021/02/07 12:12

投稿

Hr_ppm
Hr_ppm

スコア10

title CHANGED
@@ -1,1 +1,1 @@
1
- JSON.parseする際に余分なプロパティを削除したい
1
+ TypeScript JSON.parseする際に余分なプロパティを削除したい
body CHANGED
@@ -1,3 +1,5 @@
1
+ 旧タイトル) JSON.parseする際に余分なプロパティを削除したい
2
+
1
3
  ### 前提・実現したいこと
2
4
  JSONファイルからobjectにする際に、余分なプロパティを削除したい
3
5
  ### 該当のソースコード
@@ -20,4 +22,25 @@
20
22
  console.logにて値を確認すると、personの中に["name"]以外のプロパティがある
21
23
 
22
24
  元々Personには["name"]の他に["submitDate"]プロパティを設定してあり、受け取ったJSONにはこれがあったりなかったりします。これを受け取り時に削除したいです
23
- 今回は余分なプロパティが名前までわかっているので、delete person.submitDateで消しても問題ないですが、できれば未知のプロパティも消せるようにしたいです
25
+ 今回は余分なプロパティが名前までわかっているので、delete person.submitDateで消しても問題ないですが、できれば未知のプロパティも消せるようにしたいです
26
+
27
+ ### 追記
28
+ ``` TypeScript
29
+ //json受け取り処理
30
+ const jsonString = rec[0].data.inputData
31
+ const newObject:Person[] = JSON.parse(jsonString)
32
+
33
+ //以下追加
34
+ //interfaceからは実行時に情報が得られないので、クラスを定義
35
+ class PersonClass implements Person{
36
+ name:''
37
+ }
38
+ const validation = new PersonClass()
39
+ const includeProps = Object.keys(validation)
40
+ //プロパティの文字列を配列の形で得たので、これを使ってプロパティの存在チェックが出来る
41
+ //newObject.mapで新しい配列を作ったり
42
+ //newObject.forEachで既存の配列に手を加えたり
43
+
44
+
45
+ ```
46
+ 冗長だと思いますが目的のプロパティを消す部分は達成できました。