json基本语法

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,具有简单的语法和结构。了解 JSON 的基本语法是使用它的关键。以下是 JSON 的常见语法元素和示例:

1. JSON 对象(Object)

  • 定义:对象是由一对花括号 {} 包裹的键值对集合。每个键(或属性名)是一个字符串,后面跟着一个冒号 : 和一个值。

  • 格式{ "key1": value1, "key2": value2, ... }

  • 示例:

    1
    2
    3
    4
    5
    {
    "name": "Alice",
    "age": 30,
    "isStudent": false
    }

2. JSON 数组(Array)

  • 定义:数组是由一对方括号 [] 包裹的值的集合。值之间用逗号 , 分隔。

  • 格式[ value1, value2, ... ]

  • 示例:

    1
    2
    3
    4
    5
    [
    "apple",
    "banana",
    "cherry"
    ]

3. JSON 字符串(String)

  • 定义:字符串是用双引号 " 包裹的文本,可以包含 Unicode 字符、转义字符等。

  • 格式"string"

  • 示例:

    1
    "Hello, World!"

4. JSON 数字(Number)

  • 定义:数字可以是整数或浮点数,不需要引号。

  • 格式number

  • 示例:

    1
    2
    42
    3.14

5. JSON 布尔值(Boolean)

  • 定义:布尔值表示逻辑上的真(true)或假(false)。

  • 格式truefalse

  • 示例:

    1
    2
    true
    false

6. JSON null

  • 定义null 表示空值或无值。

  • 格式null

  • 示例:

    1
    null

7. JSON 嵌套

  • 定义:JSON 支持嵌套,即对象和数组可以作为值嵌套在其他对象或数组中。

  • 示例:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    {
    "name": "Alice",
    "address": {
    "street": "123 Main St",
    "city": "Wonderland"
    },
    "phoneNumbers": [
    "123-456-7890",
    "987-654-3210"
    ]
    }

8. JSON 转义字符

  • 定义:在 JSON 字符串中,可以使用反斜杠 \ 来转义特殊字符。

  • 转义字符:

    • \":双引号
  • \\:反斜杠

    • \/:斜杠
    • \b:退格
    • \f:换页
    • \n:换行
    • \r:回车
    • \t:制表符
    • \u:Unicode 字符
  • 示例:

    1
    2
    3
    4
    5
    {
    "text": "He said, \"Hello!\"",
    "path": "C:\\Program Files\\App",
    "unicode": "\u00A9"
    }

9. JSON 空格和换行

  • 定义:JSON 不依赖空格和换行符来分隔数据,虽然它们可以用于提高可读性。解析 JSON 时,空格和换行符会被忽略。

  • 示例:

    1
    2
    3
    4
    5
    6
    7
    8
    {
    "name": "Alice",
    "age": 30,
    "address": {
    "street": "123 Main St",
    "city": "Wonderland"
    }
    }

10. JSON 的数据格式约束

  • :必须是字符串,且用双引号包裹。
  • :可以是字符串、数字、布尔值、对象、数组或 null
  • 唯一性:对象中的键必须是唯一的。

例题:

[SWPUCTF 2021 新生赛]jicao

img

分析:highlight_file('index.php') 会将 index.php 文件的源代码以高亮显示的形式输出到网页上。这样,用户可以看到 index.php 的内容。include("flag.php") 会将 flag.php 文件的内容包含到当前脚本中,执行其中的代码。$id == "wllmNB":检查 $id 是否等于 "wllmNB"$json['x'] == "wllm":检查 $json 数组中的 x 键是否存在且其值等于 "wllm"

所以当我们用post方法传入id =wllmNB,用get方法传入json={"x":"wllm"} 就可以得到flag

img