Json Blueprint Utilities Plugin
Official JSON support in Blueprints via the Json Blueprint Utilities plugin.

Unreal Directive is free and ad-free.
If it saved you time, you can help keep it that way.
Official JSON support in Blueprints via the Json Blueprint Utilities plugin.

Unreal Directive is free and ad-free.
If it saved you time, you can help keep it that way.
The Json Blueprint Utilities plugin adds JSON support to Blueprints. It ships with Unreal Engine 5 but isn't enabled by default.
Open Edit > Plugins, search for Json Blueprint Utilities, and enable it. Restart the editor. All nodes appear under the Json category in the Blueprint context menu.
The plugin provides 9 Blueprint nodes:
| Node | What it does |
|---|---|
Load Json from String | Parses a JSON string into a JsonObject |
Load Json from File | Reads a file from disk and parses it into a JsonObject |
Get Json String | Serializes a JsonObject back into a string |
Save Json to File | Writes a JsonObject to a file on disk |
Get Field | Reads a field from a JsonObject with a polymorphic output pin |
Set Field | Writes a field to a JsonObject with a polymorphic input pin |
Has Field | Checks whether a field exists on a JsonObject |
Get Field Names | Returns all top-level keys as an array of strings |
Convert Struct To Json String | Serializes any USTRUCT into a JSON string |
The variable type for storing and passing JSON data between nodes is JsonObject (FJsonObjectWrapper internally).
Get Field, Set Field, and Convert Struct To Json String use polymorphic pins. The pin type adapts to whatever you connect to it. For example, connecting a Float variable to the Get Field output pin tells the node to extract a number. This works with strings, integers, floats, booleans, structs, and arrays.
It's ideal to connect the target variable first, then wire the rest. If the pin shows a gray wildcard, it doesn't know what type to resolve to yet.
There's no error message when a field is missing. Get Field returns false silently. It's ideal to check with Has Field first when working with data you don't control.
Struct conversion is one-way. Convert Struct To Json String exists, but there's no matching node for the reverse. Thankfully, there's a workaround: use Load Json from String followed by Get Field with an empty FieldName and the struct type connected to the output.
Load Json from String and Load Json from File run on the game thread, so large files cause a hitch. If you're parsing anything over a few hundred KB, consider doing it in C++ on a background thread.
JsonObject variables can replicate their internal string, but the parsed object isn't rebuilt automatically on the receiving end. PostSerialize doesn't fire after network deserialization, so the receiver gets an empty object pointer. You'll need to re-parse with Load Json from String after receiving.