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

回答編集履歴

2

追記

2017/02/25 11:08

投稿

Lhankor_Mhy
Lhankor_Mhy

スコア37460

answer CHANGED
@@ -25,4 +25,11 @@
25
25
  })(o)
26
26
  })(JSON.parse(str));
27
27
  ```
28
- こんな感じか、うーん……
28
+ こんな感じか、うーん……
29
+  
30
+ ##### ひらめいた
31
+ これならプロトタイプ汚染されないんじゃないかな?
32
+ ```javascript
33
+ let str='{"a":1}';
34
+ let obj = Object.assign(Object.create(null), JSON.parse(str));
35
+ ```

1

追記

2017/02/25 11:08

投稿

Lhankor_Mhy
Lhankor_Mhy

スコア37460

answer CHANGED
@@ -11,4 +11,18 @@
11
11
  {"a":{"c":3},"b":2}
12
12
  */
13
13
  ```
14
- プロトタイプ汚染をして階層のディープなMap構造をJSONにする方法を思いついたのですが、パースが手間ですねえ……
14
+ プロトタイプ汚染をして階層のディープなMap構造をJSONにする方法を思いついたのですが、パースが手間ですねえ……
15
+
16
+ ##### 追記
17
+ ```javascript
18
+ (o => {
19
+ return (function f(o){
20
+ if (Object.getPrototypeOf(o) === Object.prototype){
21
+ return new Map( Object.keys(o).map(k=> [k, f(o[k])]) );
22
+ } else {
23
+ return o;
24
+ }
25
+ })(o)
26
+ })(JSON.parse(str));
27
+ ```
28
+ こんな感じか、うーん……