# \[SOLVED\] JSON Serializing and Deserializing C++

**URL:** <https://forums.unrealengine.com/t/solved-json-serializing-and-deserializing-c/119867>\
**Category:** C++\
**Tags:** unreal-engine\
**Created:** [December 12, 2018, 7:08am UTC](https://forums.unrealengine.com/t/solved-json-serializing-and-deserializing-c/119867 "2018-12-12T07:08:26Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![CHADALAK1](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@CHADALAK1](https://forums.unrealengine.com/u/CHADALAK1)\
**Post date:** [December 12, 2018, 7:08am UTC](https://forums.unrealengine.com/t/solved-json-serializing-and-deserializing-c/119867/1 "2018-12-12T07:08:26Z")

</div>

Hello Community!

I’ve been out of the loop with serializing and deserializing Json in C++. I know in C#, say example I have this

```auto

{
    "Name" : "Dude",
    "Age" : 12,
    "Occupation" : "duder"

}

```

And for the serialized class class

```auto

[Serializable]
public class Person
{
    public string Name;
    public int Age;
    public string Occupation;
}

```

I see everywhere online on how to retrieve the JSON text into a FJsonObject and FJsonReader, but I’m unsure on the steps to deserialize

C# (Unity) example

```auto

 string jsonString = /* DO FILE IO STUFF TO GET JSON file as string */
Person person = JsonUtility.FromJson<Person>(jsonString);  

```

How would one be able to deserialize a Person class from JSON in UE4 C++? Am I able to deserialize the values in a class/struct like this?

---

<div class="post-metadata">

**Author:** ![Zeblote](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@Zeblote](https://forums.unrealengine.com/u/Zeblote)\
**Post date:** [December 12, 2018, 2:53pm UTC](https://forums.unrealengine.com/t/solved-json-serializing-and-deserializing-c/119867/2 "2018-12-12T14:53:30Z")

</div>

There is a tool to automatically serialize UStructs:

```auto

USTRUCT()
struct FPerson
{
    GENERATED_BODY()

public:
    UPROPERTY()
    FString Name;

    UPROPERTY()
    FString Occupation;

    UPROPERTY()
    int32 Age;
};

```

To read:

```auto

FString Blah = ...;
FPerson Person;

if(!FJsonObjectConverter::JsonObjectStringToUStruct(Blah, &Person, 0, 0))
{
    // error
}

```

To write:

```auto

FString Blah;
FPerson Person;

FJsonObjectConverter::UStructToJsonObjectString(Person, Blah);

```

---

<div class="post-metadata">

**Author:** ![CHADALAK1](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@CHADALAK1](https://forums.unrealengine.com/u/CHADALAK1)\
**Post date:** [December 12, 2018, 6:28pm UTC](https://forums.unrealengine.com/t/solved-json-serializing-and-deserializing-c/119867/3 "2018-12-12T18:28:44Z")

</div>

> [@Zeblote](#):
>
> There is a tool to automatically serialize UStructs:
> 
> ```auto
> 
> USTRUCT()
> struct FPerson
> {
> GENERATED_BODY()
> 
> public:
> UPROPERTY()
> FString Name;
> 
> UPROPERTY()
> FString Occupation;
> 
> UPROPERTY()
> int32 Age;
> };
> 
> ```
> 
> To read:
> 
> ```auto
> 
> FString Blah = ...;
> FPerson Person;
> 
> if(!FJsonObjectConverter::JsonObjectStringToUStruct(Blah, &Person, 0, 0))
> {
> // error
> }
> 
> ```
> 
> To write:
> 
> ```auto
> 
> FString Blah;
> FPerson Person;
> 
> FJsonObjectConverter::UStructToJsonObjectString(Person, Blah);
> 
> ```

Thank you soo much! Been looking around for this for quite some time. Muchly appreciate this!

---

<div class="post-metadata">

**Author:** ![CHADALAK1](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@CHADALAK1](https://forums.unrealengine.com/u/CHADALAK1)\
**Post date:** [December 15, 2018, 11:28pm UTC](https://forums.unrealengine.com/t/solved-json-serializing-and-deserializing-c/119867/4 "2018-12-15T23:28:00Z")

</div>

```auto

    FString FilePath = "C:\\Users\\<YOUR_USER>\\Desktop\\Person.json";
    FString FileData = "";
    if (!FPlatformFileManager::Get().GetPlatformFile().FileExists(*FilePath))
    {
        UE_LOG(LogTemp, Warning, TEXT("DID NOT FIND FILE"));
        return;
    }

    FPerson PersonJSON;
    FFileHelper::LoadFileToString(FileData, *FilePath);

    UE_LOG(LogTemp, Warning, TEXT("%s"), *FileData);

    if (FJsonObjectConverter::JsonObjectStringToUStruct(FileData, &PersonJSON, 0, 0))
    {
        UE_LOG(LogTemp, Warning, TEXT("CONVERTED"));
        UE_LOG(LogTemp, Warning, TEXT("Name: %s Age: %d Occupation: %s"), *PersonJSON.Name, 
            PersonJSON.Age, *PersonJSON.Occupation);
    }

```

Just for persons needing a reference, this works out very well ^\_^! able to get everything correct :D! Thank you again @\*\*[Zeblote](https://forums.unrealengine.com/member/1124-zeblote) !!! \*\*

---

<div class="post-metadata">

**Author:** ![SharpC1](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@SharpC1](https://forums.unrealengine.com/u/SharpC1)\
**Post date:** [June 5, 2024, 2:39pm UTC](https://forums.unrealengine.com/t/solved-json-serializing-and-deserializing-c/119867/5 "2024-06-05T14:39:26Z")

</div>

it works only for “Person” class, how can we use generic deserializing in c++?
