JSONPreview JSONPreview

JSONPreview 是一个 JSON 预览组件,允许你格式化你的 JSON 数据并以语法高亮显示它。此外,JSONPreview 提供了折叠和展开功能,允许你折叠当前未关注的节点,并在任何时候重新显示它们。

JSONPreview 继承自 UIView,并基于 UITextView 实现了相关功能。整个框架完全基于原生框架实现,这意味着在 Apple 平台上使用此框架时,你可以获得更好的用户体验。

预览

下面是一个大约 25 秒的 gif 动图 (约 2.5M),演示了使用此库预览 JSON 的效果。

screenshot

安装

CocoaPods

pod 'JSONPreview'

Swift Package Manager

或者将以下内容添加到你的 Package.swift 文件中

dependencies: [
  .package(url: "https://github.com/RakuyoKit/JSONPreview.git", from: "2.3.2")
]

功能特性

更多细节

  1. JSONPreview 提供了有限且不完整的格式检查,因此此功能不作为主要功能提供。 详细信息请参见:格式检查
  2. 版本 1.2.0 添加了对渲染链接的支持。 除了渲染之外,JSONPreview 还执行有限的转义解除:支持将 "\\/" 替换为 "/"

使用方法

下载项目后,Demo 目录包含示例项目。 你可以运行该项目以查看相应的效果。

基本用法和默认配置

  1. 创建一个 JSONPreview 对象并将其添加到界面
let previewView = JSONPreview()
view.addSubview(previewView)
  1. 调用 JSONPreview.preview 方法以使用默认样式预览数据
let json = "{\"key\":\"value\"}"
previewView.preview(json)

自定义样式

如果你想自定义语法高亮样式,可以使用 HighlightStyleHighlightColor 进行设置

ConvertibleToColor 是一个用于提供颜色的协议。 通过此协议,你可以直接使用 UIColor 对象,或者轻松地将 0xffffff, #FF7F20[0.72, 0.18, 0.13] 等值转换为 UIColor 对象。

let highlightColor = HighlightColor(
    keyWord: ConvertibleToColor,
    key: ConvertibleToColor,
    link: ConvertibleToColor,
    string: ConvertibleToColor,
    number: ConvertibleToColor,
    boolean: ConvertibleToColor,
    null: ConvertibleToColor,
    unknownText: ConvertibleToColor,
    unknownBackground: ConvertibleToColor,
    searchHitBackground: ConvertibleToColor?,
    jsonBackground: ConvertibleToColor,
    lineBackground: ConvertibleToColor,
    lineText: ConvertibleToColor
)

let style = HighlightStyle(
    expandIcon: UIImage?,
    foldIcon: UIImage?,
    color: highlightColor,
    lineFont: UIFont?,
    jsonFont: UIFont?,
    lineHeight: CGFloat,
    boldedSearchResult: Bool
)

previewView.preview(json, style: style)

你还可以配置 initialState 参数来设置 JSON 子节点的初始状态。

// By default, all nodes are initially in a collapsed state during preview.
previewView.preview(json, style: style, initialState: .folded)

格式检查

当渲染 JSON 时,JSONPreview 执行 有限的 格式检查。

已知的触发 “错误渲染” 的条件包括

除了明确提到的条件之外,其他错误也可能触发 “错误渲染”。 此外,还可能存在一些超出格式检查范围的错误,这些错误可能导致 JSON 中内容丢失

建议不要过度依赖 JSONPreview 的格式检查功能,并尽可能将其用于预览格式正确的 JSON。

数据流图

DFD

贡献

你可能会觉得 JSONPreview 的更新不频繁,但请放心,这个项目没有被放弃或停止 - 我仍然在跟进它。

如果你在使用过程中遇到任何问题,请随时 告诉我,我会尽快回复并提供帮助。

此外,如果你想提交 PR,请在提交代码之前将你的开发基于 develop 分支。 感谢你的支持和贡献!

感谢

感谢 AwhisperJSONPreview 开发期间提供的宝贵见解。

许可

JSONPreviewMIT 许可下可用。 更多信息,请参阅 LICENSE