JSONPreview
是一个 JSON 预览组件,允许你格式化你的 JSON 数据并以语法高亮显示它。此外,JSONPreview
提供了折叠和展开功能,允许你折叠当前未关注的节点,并在任何时候重新显示它们。
JSONPreview
继承自 UIView
,并基于 UITextView
实现了相关功能。整个框架完全基于原生框架实现,这意味着在 Apple 平台上使用此框架时,你可以获得更好的用户体验。
下面是一个大约 25 秒的 gif 动图 (约 2.5M),演示了使用此库预览 JSON 的效果。
pod 'JSONPreview'
或者将以下内容添加到你的 Package.swift
文件中
dependencies: [
.package(url: "https://github.com/RakuyoKit/JSONPreview.git", from: "2.3.2")
]
Array
和 Object
的 折叠和展开 功能 (tvOS 除外)。.folded
或 .expand
。UITextView
实现。这意味着你可以从 JSONPreview
中复制任何内容。更多细节
下载项目后,Demo 目录包含示例项目。 你可以运行该项目以查看相应的效果。
JSONPreview
对象并将其添加到界面let previewView = JSONPreview()
view.addSubview(previewView)
JSONPreview.preview
方法以使用默认样式预览数据let json = "{\"key\":\"value\"}"
previewView.preview(json)
如果你想自定义语法高亮样式,可以使用 HighlightStyle
和 HighlightColor
进行设置
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
执行 有限的 格式检查。
已知的触发 “错误渲染” 的条件包括
object
, array
, number
, bool
, string
和 null
。number
中的格式,例如科学计数法和小数。true
, false
和 null
的拼写检查。{E/e}
之后的下一个节点必须是 +
, -
或数字。array
中元素之间缺少 ,
分隔符。object
中元素之间缺少 ,
分隔符。object
中的键之后没有 :
。object
中的键之后有 :
,但缺少值。object
中的键不是字符串。除了明确提到的条件之外,其他错误也可能触发 “错误渲染”。 此外,还可能存在一些超出格式检查范围的错误,这些错误可能导致 JSON 中内容丢失。
建议不要过度依赖 JSONPreview
的格式检查功能,并尽可能将其用于预览格式正确的 JSON。
你可能会觉得 JSONPreview
的更新不频繁,但请放心,这个项目没有被放弃或停止 - 我仍然在跟进它。
如果你在使用过程中遇到任何问题,请随时 告诉我,我会尽快回复并提供帮助。
此外,如果你想提交 PR,请在提交代码之前将你的开发基于 develop
分支。 感谢你的支持和贡献!
感谢 Awhisper 在 JSONPreview
开发期间提供的宝贵见解。
JSONPreview
在 MIT 许可下可用。 更多信息,请参阅 LICENSE。