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。