Skip to content

Instantly share code, notes, and snippets.

@s1ntoneli
Created February 22, 2018 03:59
Show Gist options
  • Select an option

  • Save s1ntoneli/ac1ef8c7d5345948c4161ac610ba6795 to your computer and use it in GitHub Desktop.

Select an option

Save s1ntoneli/ac1ef8c7d5345948c4161ac610ba6795 to your computer and use it in GitHub Desktop.
一些算法、一些问题解决思路
@s1ntoneli
Copy link
Author

JSON 解析算法

@s1ntoneli
Copy link
Author

Json 字符串和 HTML 语法非常像,是一种解释型语言(暂且称之为语言)。
之所以称之为语言,是因为我们可以以解析编程语言的方式解析 Json 字符串。

编程语言解析无非三步:词法分析,语法分析,语义分析。

而Json 字符串不存在不同上下文语义不同的情况,因此不需要进行语义分析。
两步走足够:

  1. 词法分析
  2. 语法分析

Json 格式概述

  1. 由键值对组成
  2. "键"一律为字符串
  3. "值"由多种类型,可简记为 NOABCD
  • null
  • Object
  • Array
  • Boolean
  • Charactar
  • Digital

词法分析

一个完整的 Json 字符串是一个没有 key 的 Object

{
    "data": {
        "list": [
            "Apple",
            "Banana",
            "Candy"
        ],
        "payload": {
            "size": 3
        }
    },
    "code": {
        "errno": 0,
        "msg": "success",
        "payload": {}
    },
    "cached": true
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment