---
sidebar_label: "输出格式"
title: "输出格式 - CyberGo html | Markdown 与 JSON 输出"
description: "CyberGo html 输出格式 API：ExtractToMarkdown、ExtractToJSON 包函数与 Processor 方法，支持字节或文件转 Markdown/JSON。"
sidebar_position: 1
---

# 输出格式

HTML 库支持将提取结果输出为 Markdown 或 JSON 格式。

## Markdown 输出

将 HTML 内容提取并转换为 Markdown 格式。该方法使用临时 Processor（禁用缓存），不读取也不写入主 Processor 的缓存。

### 包函数

```go
func ExtractToMarkdown(htmlBytes []byte, cfg ...Config) (string, error)
func ExtractToMarkdownFromFile(filePath string, cfg ...Config) (string, error)
func ExtractToMarkdownWithContext(ctx context.Context, htmlBytes []byte, cfg ...Config) (string, error)
func ExtractToMarkdownFromFileWithContext(ctx context.Context, filePath string, cfg ...Config) (string, error)
```

### Processor 方法

```go
func (p *Processor) ExtractToMarkdown(htmlBytes []byte) (string, error)
func (p *Processor) ExtractToMarkdownFromFile(filePath string) (string, error)
func (p *Processor) ExtractToMarkdownWithContext(ctx context.Context, htmlBytes []byte) (string, error)
func (p *Processor) ExtractToMarkdownFromFileWithContext(ctx context.Context, filePath string) (string, error)
```

### 示例

```go
cfg := html.MarkdownConfig()
md, err := html.ExtractToMarkdown(data, cfg)
if err != nil {
    log.Fatal(err)
}
fmt.Println(md)
```

## JSON 输出

将提取结果序列化为 JSON 字节。该方法走主 Processor 的正常 Extract（启用缓存时会命中/写入缓存），再序列化为 JSON。

### 包函数

```go
func ExtractToJSON(htmlBytes []byte, cfg ...Config) ([]byte, error)
func ExtractToJSONFromFile(filePath string, cfg ...Config) ([]byte, error)
func ExtractToJSONWithContext(ctx context.Context, htmlBytes []byte, cfg ...Config) ([]byte, error)
func ExtractToJSONFromFileWithContext(ctx context.Context, filePath string, cfg ...Config) ([]byte, error)
```

### Processor 方法

```go
func (p *Processor) ExtractToJSON(htmlBytes []byte) ([]byte, error)
func (p *Processor) ExtractToJSONFromFile(filePath string) ([]byte, error)
func (p *Processor) ExtractToJSONWithContext(ctx context.Context, htmlBytes []byte) ([]byte, error)
func (p *Processor) ExtractToJSONFromFileWithContext(ctx context.Context, filePath string) ([]byte, error)
```

### 示例

```go
jsonBytes, err := html.ExtractToJSON(data)
if err != nil {
    log.Fatal(err)
}
fmt.Println(string(jsonBytes))
```

:::tip Result.MarshalJSON
`Result` 实现了 `json.Marshaler` 接口。`ProcessingTime` 和 `ReadingTime` 字段带有 `json:"-"` 标签（标准序列化会跳过），但自定义 `MarshalJSON()` 会将它们以毫秒数形式包含在输出中。
:::
