JSONPreview
JSONPreview copied to clipboard
π¨ A view that previews JSON in highlighted form, it also provides the ability to format and collapse nodes.
JSONPreview inherits from UIView and implements functionality based on UITextView. You can use it to format your JSON data and highlight it for display.
Also JSONPreview provides fold and expand functionality, so you can collapse nodes that you are not interested in at the moment and re-display them at any time.
All of JSONPreview's features are written using native methods, which means you get a great experience on the Apple platform.
Screenshot
Here is a gif of about 25 seconds (about 2.5M) that shows the effect when using this library to preview JSON.

Prerequisites
- iOS 10 or later.
- Xcode 10.0 or later required.
- Swift 5.0 or later required.
Install
CocoaPods
pod 'JSONPreview'
Swift Package Manager
- File > Swift Packages > Add Package Dependency
- Add https://github.com/rakuyoMo/JSONPreview.git
- Select "Up to Next Major" with "1.3.6"
Or add the following to your Package.swift file:
dependencies: [
.package(url: "https://github.com/rakuyoMo/JSONPreview.git", from: "1.3.6")
]
Features
In
1.3.0version, we removed the ability to slide diagonally. Now if a JSON row is not displayed, it will be displayed folded instead of going beyond the screen. If you wish to use this feature, please use the 1.2.3 version
-
[x] Support for formatted display of JSON data.
-
[x] Support for highlighting JSON data, with various color and font configuration options.
-
[x] Provide fold and expand for
ArrayandObject. -
[x] Based on
UITextView, meaning you can copy any content inJSONPreview. -
JSONPreviewprovides limited, incomplete format checking functionality, so this feature is not provided as a main feature. For more details, please refer to: Format check
Usage
After downloading the project,
ViewController.swiftfile contains part of the test code, just run the project Check the corresponding effect.
- Create the
JSONPreviewobject and add it to the interface.
let previewView = JSONPreview()
view.addSubview(previewView)
- Call the
preview(_:style:)method to preview the data in the default style:
let json = "{\"key\":\"value\"}"
previewView.preview(json)
- If you want to customize the highlight style, you can set it through the
HighlightStyleandHighlightColortypes:
Among them,
ConvertibleToColoris a protocol for providing colors. Through this protocol, you can directly use theUIColorobject, or easily convert such objects as0xffffff,#FF7F20and[0.72, 0.18, 0.13]toUIColorobjects.
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)
Format Check
Rendering
For rendering, JSONPreview only performs limited formatting checks.
The conditions that are known to trigger Error Rendering include
- Value Unconventional JSON types. Supported types include
object,array,number,bool,string, andnull. - Checks for the
numberformat, such as scientific notation and decimals. - Spell checking for
true,falseandnull. - For scientific notation, the next node of
{E/e}must be+,-or a number. arrayelements are not separated by,.objectelements are not separated by,.- No
:after the key ofobject. objecthas:after the key but is missing the value.- The key of
objectis not a string.
In addition to the conditions explicitly mentioned above, other errors may also trigger an "error rendering". There may also be errors outside the scope of the formatting check that do not trigger "error rendering". However, they may lead to missing json content.
It is recommended that you do not rely too much on JSONPreview format checking, and use it to preview correctly formatted json whenever possible.
Link
The 1.2.0 version adds rendering of links. While rendering, JSONPreview performs a limited de-escaping operation.
The de-escaping operations supported by different versions are as follows:
If not otherwise specified, the following functions are cumulative.
- 1.2.0: Support replacing
"\\/"with"/".
Data Flow Diagram

TODO
- [ ] Support
Carthage. - [ ] Support for intel macOS.
Thanks
Thanks to Awhisper for his valuable input during the development of JSONPreview.
License
JSONPreview is available under the MIT license. For more information, see LICENSE.