JSONPreview 2.3.1

JSONPreview 2.3.1

Rakuyo 维护。



  • Rakuyo

JSONPreview

中文

JSONPreview 继承自 UIView 并实现了基于 UITextView 的功能。您可以使用它来 格式化 JSON 数据并 突出显示 它进行显示。

此外,JSONPreview 还提供了 折叠和展开 功能,您可以将您当前不感兴趣的节点折叠起来,并在任何时间重新显示它们。

JSONPreview 的所有功能都使用 原生方法 编写,这意味着您在 Apple 平台上将获得极佳的体验。

截图

这是一个大约 25 秒的 gif 图(约 2.5M),展示了使用此库预览 JSON 时的影响。

screenshot

先决条件

  • iOS 10 或更高版本.
  • 需要 Xcode 10.0 或更高版本
  • 需要 Swift 5.0 或更高版本

安装

CocoaPods

pod 'JSONPreview'

Swift 包管理器

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

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

特性

1.3.0 版本中,我们移除了斜向滑动的功能。现在如果 JSON 行未显示,它将被折叠显示而不是超出屏幕。如果您想使用此功能,请使用 1.2.3 版本

  • 支持 JSON 数据的 格式化 显示。

  • 支持 JSON 数据的 高亮,具有多种颜色和字体配置选项。

  • ArrayObject 提供 折叠展开

  • 基于 UITextView,这意味着您可以从 JSONPreview 复制任何内容。

  • JSONPreview 提供有限的、不完整的格式检查功能,因此此功能不被作为主要功能提供。有关更多详细信息,请参阅:[格式检查](#format-check)

用法

下载项目后,`ViewController.swift` 文件包含部分测试代码,直接运行项目检查相应效果。

  1. 创建 `JSONPreview` 对象并将其添加到界面。
let previewView = JSONPreview()

view.addSubview(previewView)
  1. 调用preview(_:style:)方法以默认样式预览数据
let json = "{\"key\":\"value\"}"

previewView.preview(json)
  1. 如果您想自定义突出显示样式,可以通过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,
    jsonBackground: ConvertibleToColor,
    lineBackground: ConvertibleToColor,
    lineText: ConvertibleToColor
)

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

previewView.preview(json, style: style)

格式检查

渲染

对于渲染,JSONPreview只执行有限的格式检查。

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

  • 非传统JSON值类型。支持的类型包括objectarraynumberboolstringnull
  • number格式的检查,例如科学记数法和小数。
  • truefalsenull进行拼写检查。
  • 对于科学记数法,{E/e}后的下一个节点必须是+-或数字。
  • array元素之间没有,分隔。
  • object元素之间没有,分隔。
  • object的键后没有:
  • object在键后有:但缺少值。
  • object的键不是字符串。

除了上述明确提到的条件外,其他错误也可能触发“渲染错误”。格式检查范围之外的错误也可能不会触发“渲染错误”,但它们可能会导致json内容丢失

建议不要过度依赖JSONPreview格式检查,并尽可能在使用时正确预览格式化的json。

链接

1.2.0版本增加了链接的渲染功能。在渲染过程中,JSONPreview执行有限的转义反转操作。

不同版本支持的转义反转操作如下

除非另有说明,以下功能是累积的。

  • 1.2.0: 支持"\\/"替换为"/"

数据流图

DFD

待办事项

  • 支持Carthage
  • 支持英特尔macOS。

感谢

感谢AwhisperJSONPreview开发过程中的宝贵意见。

许可协议

JSONPreview采用MIT许可协议。更多信息,请参阅LICENSE