created by aha00a at 2018-03-12
last modified by aha00a at 2018-03-12
revision: 4

JavaScript VS JSON

둘은.. 사실 많이 다르다.

1. JSONJavaScript Object

쌩으로 eval하지 말고, json2를 써서 파싱하자. --2014-06-03

옛날 얘기다. IE7 까지는 지원되지 않아서 eval()을 사용했었는데, 이게 쌩 스크립트 실행이다 보니 보안 이슈가 생길 가능성이 높아, JSON2를 써서 deserialize했었다. 다른 브라우저는 당연히 잘 되고, IE8 부터 내장되어 있는 JSON.stringify()JSON.parse()를 쓰면 된다.

--2018-03-12

2. undefined, NaN, Infinity

JSON에서 허용하는 Literal은 object literal, array literal, number literal, string literal, false, null, true 밖에 없다.

즉 허용되는 Literal에 undefined, NaN, Infinity가 빠져있다.

그래서 표준(https://www.ecma-international.org/ecma-262/5.1/#sec-15.12.3)에 보면 JSON.stringify()undefined인 필드는 serialize하지 않으며, NaNInfinitynull로 serialize한다고 나와있다.

처음에는 값이 undefined인 필드를 JSON.stringify()가 render하지 않아서, 왜 이렇게 구현되어 있는지 이해가 가지 않았는데, JSON의 스펙이 그런걸 어쩌랴.. --2018-03-12

3. See Also

3.2. Similar Pages

Similar pages by cosine similarity. Words after page name are term frequency.

  • 54.55% JSON json(11:6), org(3:4), script(4:2), java(4:2), ecma(2:3), object(2:1), web(2:1), www(1:2), vs(1:1), international(1:1)
  • 43.62% JSON-LD json(11:5), org(3:3), en(2:1), www(1:1)
  • 30.69% JavaScript script(4:32), java(4:30), json(11:1), js(1:7), org(3:4), web(2:3), object(2:2), en(2:1), github(1:1), array(1:1)

3.3. Adjacent Pages