# 使用 JSON 文件

从 Qlik Cloud 中的 JSON 文件加载数据。

您可以像处理 Qlik Cloud 支持的任何其他数据文件一样从 JSON 文件加载数据。有关更多信息，请参阅[从文件中加载数据](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataSource/load-data-from-files.htm)。

也可以使用 LOAD 命令从加载脚本中的 JSON 文件加载数据。例如：

```
LOAD  * from [lib://DataFiles/xyz.json] (json);
```

有关更多信息，请参阅[Load](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Load.htm)。

LOAD 语句可以通过在字段列表中列出所需的字段而不是使用通配符来筛选或重新排序字段。例如：`LOAD a.b, b.c FROM […] (json);`。不存在的字段不会触发错误。

## 从 JSON 加载嵌套对象

如果一个值是一个对象，那么该对象的成员将用于用其他字段来扩展表。每个字段名都是父项和子项的组合。例如，下面的 JSON 包含嵌套对象：

```

[
	{"name":{"first":"Alice","last":"Stephenson"}},
	{"name":{"first":"Bob"}},
	{"name":{"last":"Roberts"}}
]
```

用 `LOAD * FROM [lib://DataFiles/example.json] (json);` 进行加载后，将生成以下数据表：

嵌套数据表格示例

| name.first | name.last |
| --- | --- |
| Alice | Stephenson |
| Bob | null |
| null | Roberts |

## 加载多个表格

必须使用多个加载语句加载带数组的 JSON 数据。数组的内容被散列，并用作链接表的键。

例如，下面的 JSON 有多个表。

```

[
	{"a":[1,2],"b":[3,4]},
	{"a":[2,3],"b":[4,5]}
]
```

这需要用以下 LOAD 语句进行加载：

LOAD \* FROM [...] (json); LOAD \* FROM [...] (json, table is [/\*/a]); LOAD \* FROM [...] (json, table is [/\*/b]);

table is 说明符是子表的迭代器路径。由此得到了以下数据表格：

表格 1

| %Key\_a | %Key\_b |
| --- | --- |
| &lt;hash of [1,2]&gt; | &lt;hash of [3,5]&gt; |
| &lt;hash of [2,3]&gt; | &lt;hash of [4,5]&gt; |

表格 2

| %Key\_a | a..@1 |
| --- | --- |
| &lt;hash of [1,2]&gt; | 1 |
| &lt;hash of [1,2]&gt; | 2 |
| &lt;hash of [2,3]&gt; | 2 |
| &lt;hash of [2,3]&gt; | 3 |

表格 3

| %Key\_b | b..@1 |
| --- | --- |
| &lt;hash of [3,5]&gt; | 3 |
| &lt;hash of [3,5]&gt; | 4 |
| &lt;hash of [4,5]&gt; | 4 |
| &lt;hash of [4,5]&gt; | 5 |

信息注释如果您的数据包含多个内容相同的数组，请在子表 LOAD 语句中使用关键字 DISTINCT。例如：LOAD DISTINCT \* FROM [lib://DataFiles/Sales.json] (json, all tables);

### 查看数组

在加载数据时，可以使用字段列表来查看数组，否则这些数组将作为子表加载。例如

```
[
	{"pos":[1,2,3]},
	{"pos":[4,5,6]}
]
```

这可以用以下 LOAD 语句进行加载：

LOAD pos.0 AS x, pos.1 AS y, pos.2 AS z FROM […] (json);.

由此得到了以下表格：

| x | y | z |
| --- | --- | --- |
| 1 | 2 | 3 |
| 4 | 5 | 6 |

### 加载所有表格

您可以通过指定所有表而不是 Table is 来加载所有表。例如：

LOAD \* FROM [lib://DataFiles/Sales.json] (json, all tables);

#### 限制

JSON 文件存在以下限制：

* JSON 中的单个 LOAD 语句可以加载的上限如下：

  * 5,000 个字段

  * 1,000 个表格