# API(通过HTTPS POST请求将JSON转换为Excel)
[English](https://json-to-excel.wtsolutions.cn/en/latest/API.html)
WTSolutions的JSON-to-Excel是一系列可以将JSON转换为Excel的工具,无论是扁平JSON还是嵌套JSON都可以转换。它提供了"将JSON转换为Excel"的全场景解决方案,包括Excel加载项、Web应用程序:
* 网络版方案
* [Web应用:直接在Web浏览器中转换JSON到Excel。](WebApp.md)
* [Excel加载项:在Excel中转换JSON到Excel,与Excel环境无缝协作。](ExcelAddIn.md)
* [WPS加载项:在WPS中转换JSON到WPS工作表,与WPS环境无缝协作。](WPSAddIn.md)
* API:通过HTTPS POST请求在API中转换JSON到Excel(<-- 您在此处)
* [MCP服务器:在MCP服务器中转换JSON到Excel](MCP.md)
* 本地化方案
* [本地化应用:在本地化应用中转换JSON到Excel,支持离线转换](LocalApp.md)
* 本地化Excel加载项,即将发布
* 本地化WPS加载项,即将发布
## 要求
需要HTTPS POST请求工具,如Postman、Curl、Python Requests、Javascript fetch等。
确保通过设置CORS头正确处理CORS问题。
## 访问点
向访问点 `https://mcp2.wtsolutions.cn/json-to-excel-api` 发送`POST`请求,并在请求中包含下面使用部分描述的必要参数。
## 使用方法 - 专业版
### 请求格式
API 接受带有 `application/json` 主体的 POST 请求,主体包含以下参数之一:
| 参数 | 类型 | 是否必需 | 描述 |
|------|------|----------|------|
| data | 字符串 | 否 | 要转换为 CSV 的 JSON 数据字符串。必须是有效的 JSON 数组或对象。 |
| url | 字符串 | 否 | 指向 JSON 文件的 URL。必须提供 'data' 或 'url' 中的一个 |
| options | 对象 | 是 | 用于自定义转换过程的配置对象 |
> 注意:
> - 提供 `data` 或 `url` 中的一个,不要同时提供。
> - 如果您想使用自定义转换设置,`options` 是必需的。
> - 如果您没有有效的专业版代码,最多转换6行数据。如果有Pro Code,则不限制转换行数。
#### 对 data 和 url 的要求
发送 `data` 时
> - 输入数据必须是有效的 JSON 字符串。JSON 格式要求可在 [JSON 格式要求](profeatures.md#json-format-schema) 获取,验证器可在 [JSON 到 Excel Web 应用](https://s.wtsolutions.cn/json-to-excel.html) 获取。
> - 如果 JSON 是对象数组,每个对象将被视为 CSV 中的一行。
> - 如果 JSON 是单个对象,它将被转换为包含键值对的 CSV。
> - CSV 将包含基于 JSON 对象中键的标题。
> - 此工具返回可轻松转换/导入到 Excel 的 CSV 格式数据。
发送 `url` 时
> - URL 应该是公开可访问的。
> - JSON 文件应该是 .json 格式。
> - JSON 文件应包含有效的 JSON 数组或对象。JSON 格式要求可在 [JSON 格式要求](profeatures.md#json-format-schema) 获取,验证器可在 [JSON 到 Excel Web 应用](https://s.wtsolutions.cn/json-to-excel.html) 获取。
> - 如果 JSON 是对象数组,每个对象将被视为 CSV 中的一行。
> - 如果 JSON 是单个对象,它将被转换为包含键值对的 CSV。
> - 此工具返回可轻松转换/导入到 Excel 的 CSV 格式数据。
### 选项对象
选项对象可以包含以下属性:
| 属性 | 类型 | 默认值 | 描述 |
|------|------|--------|------|
| proCode | 字符串 | "" | 专业版代码,需要有效的 JSON 转 Excel 服务订阅。proCode可以通过options中参数传递,也可以在https请求头中传递proCode。 |
| jsonMode | 字符串 | “flat” | JSON 输出的格式模式:“nested”(嵌套)或 “flat”(扁平) |
| delimiter | 字符串 | “.” | 使用 jsonMode: “nested” 时,嵌套 JSON 键的分隔符字符,可接受的分隔符有 “.”、“_”、“__”、“/”。 |
| maxDepth | 字符串 | "unlimited" | 使用 jsonMode: “nested” 时,嵌套 JSON 对象的最大深度。maxDepth 可接受的值为 "unlimited"、"1" ~ "20"。 |
注意:
> - proCode 是可选的。如果没有提供 proCode,将最多转换6行数据。
> - proCode 可以通过 options 中参数传递,也可以在 https 请求头中传递 proCode。
> - 详细的转换规则可在 [转换规则](profeatures.md) 中找到。
### 响应格式
API 返回具有以下结构的 JSON 对象:
| 字段 | 类型 | 描述 |
|------|------|------|
| isError | 布尔值 | 指示处理请求时是否出错 |
| msg | 字符串 | 'success'(成功)或错误描述 |
| data | 字符串 | 转换后的 CSV 数据字符串,如果出错则为空。此 CSV 数据可轻松导入到 Excel。 |
### 示例
#### 使用 'data' 的请求示例
请求:
```json
{
"data": "[{\"name\":\"John\",\"contact\":{\"email\":\"john@example.com\",\"phone\":\"1234567890\"}},{\"name\":\"Jane\",\"contact\":{\"email\":\"jane@example.com\",\"phone\":\"0987654321\"}}]",
"options":{
"proCode": "input your Pro Code here",
"jsonMode": "nested",
"delimiter": ".",
"maxDepth": "unlimited"
}
}
```
响应:
```json
{
"isError": false,
"data": "name,contact.email,contact.phone\nJohn,john@example.com,1234567890\nJane,jane@example.com,0987654321",
"msg": "success"
}
```
#### 错误回复示例
```json
{
"isError": true,
"msg": "Invalid JSON format",
"data": ""
}
```
### 数据类型处理
API 会自动处理 JSON 中的不同数据类型:
- **数字**:转换为 CSV 中的数值
- **布尔值**:转换为 'true'/'false' 字符串
- **字符串**:必要时进行转义并加引号
- **数组**:转换为 JSON.stringify 后的数组字符串
- **对象**:转换为 JSON.stringify 后的对象字符串
## 错误处理
API为常见问题返回描述性错误消息:
- `Invalid JSON format`:当输入数据不是有效的JSON字符串时
- `Empty JSON data`:当输入数据是空的JSON字符串时
- `Network Error when fetching file`:当从提供的URL下载文件出错时
- `File not found`:当找不到提供的URL上的文件时
- `Server Internal Error`:当发生意外错误时
- `Max 6 rows processed, upgrade to Pro to process more data`:当没有提供Pro Code时,最多转换6行数据