实现JSON解析器

时间:2015-11-09 18:13:31

标签: javascript java json

这个问题与实施语言无关。

在最近的一次采访中,我被要求编写一个JSON解析器: 我得到的输入如下所示:

 {
      'key1': 'value1',
      'key2': [key21, key22]
    }

听起来很简单,因为我不知道如何编写解析器而感到难过(顺便说一句,我知道JSON.parse()方法)。

问题是编写自己的解析器。

上述JSON的格式不正确并不重要。如果不是,解析应该抛出错误。

有人能指出我可以用来解决这个问题的技巧。

1 个答案:

答案 0 :(得分:4)

基本上,您首先必须逐个字符地扫描字符串,以便将其分隔为令牌。

  • {}是令牌。我们称他们为'START_OBJECT'和'END_OBJECT';
  • []也是令牌。我们称他们为'START_ARRAY'和'END_ARRAY';
  • :,也是令牌。我们称他们为'COLON'和'COMMA';
  • 'key1''key2''value1'是'STRING_CONSTANT'标记,其值是字符串本身;
  • key21key22IDENTIFIER个令牌,其值为'key21'和'key22'

解析过程的初始部分,即将源代码分解为标记,称为“词法分析”,是解析过程的第一步。

下一步是'语法分析',你可以从标记序列中找出源的实际结构。