Json String to Json Object
FString jsonstr="{'id':'xx','arr':[{'no':0}]}";
TSharedRef<TJsonReader<>> JsonReader = TJsonReaderFactory<>::Create(jsonstr);
TSharedPtr<FJsonObject> rRoot;
if (FJsonSerializer::Deserialize(JsonReader, rRoot)) {
TArray<TSharedPtr<FJsonValue>> arr = rRoot->GetArrayField("arr");
for (auto i:arr)
{
TSharedPtr<FJsonObject> iObj = i->AsObject();
int32 no = iObj->GetNumberField("no");
}
}
JsonArr add Item
TSharedPtr<FJsonObject> jsonObject = MakeShareable(new FJsonObject);
TArray<TSharedPtr<FJsonValue>> jsondataArr;
TSharedPtr<FJsonObject> jsonData = MakeShareable(new FJsonObject);
jsonData->SetStringField(TEXT("name"), TEXT("xxx"));
jsondataArr.Add(MakeShareable(new FJsonValueObject(jsonData)));
jsonObject->SetArrayField(TEXT("arr"), jsondataArr);
UStruct to Json String
USTRUCT()
struct FEntityInfoItemStruct
{
GENERATED_USTRUCT_BODY()
FEntityInfoItemStruct() {};
FEntityInfoItemStruct(FString _id, FString _type, float _lat, float _lng) :EntityInfoItemId(_id), EntityInfoItemType(_type), EntityInfoItemLat(_lat), EntityInfoItemLng(_lng) {};
UPROPERTY()
FString EntityInfoItemId;
UPROPERTY()
FString EntityInfoItemType;
UPROPERTY()
float EntityInfoItemLat;
UPROPERTY()
float EntityInfoItemLng;
};
USTRUCT()
struct FEntityInfoStruct
{
GENERATED_USTRUCT_BODY()
UPROPERTY()
FString action;
UPROPERTY()
TArray<FEntityInfoItemStruct> data;
FString ToString()
{
FString OutStr;
FJsonObjectConverter::UStructToJsonObjectString(*this, OutStr, 0, 0);
return OutStr;
}
};
FString converstr_ustruct2jsonstr;
FEntityInfoStruct tempEntityInfo;
tempEntityInfo.action = "type";
for (uint8 i=0;i<10;i++)
{
FEntityInfoItemStruct tempEntityInfoItem("id_"+i, "type_"+1, 0.0, 0.0);
tempEntityInfo.data.Emplace(tempEntityInfoItem);
}
FJsonObjectConverter::UStructToJsonObjectString(tempEntityInfo, converstr_ustruct2jsonstr, 0, 0);
//converstr_ustruct2jsonstr = tempEntityInfo.ToString();
Json String to UStruct
USTRUCT()
struct FUserStruct
{
GENERATED_USTRUCT_BODY()
UPROPERTY()
FString id;
UPROPERTY()
FString name;
UPROPERTY()
int32 age;
};
FUserStruct userStruct;
FString converstr_json2ustruct;
FString resstr = "{'id':'001','name':'Jack','age':10 }";
TSharedRef<TJsonReader<>> JsonReader = TJsonReaderFactory<>::Create(resstr);
TSharedPtr<FJsonObject> rRoot;
if (FJsonSerializer::Deserialize(JsonReader, rRoot)) {
FJsonObjectConverter::JsonObjectToUStruct(rRoot.ToSharedRef(), &userStruct);
}
Json Obj to UStruct
USTRUCT(BlueprintType)
struct FFlightData {
GENERATED_USTRUCT_BODY()
UPROPERTY(BlueprintReadWrite)
FString height;
UPROPERTY(BlueprintReadWrite)
FString latitude;
UPROPERTY(BlueprintReadWrite)
FString longitude;
};
USTRUCT(BlueprintType)
struct FFlightDatas {
GENERATED_USTRUCT_BODY()
UPROPERTY(BlueprintReadWrite)
TArray<FFlightData> FlightDatas;
};
TSharedRef<TJsonReader<>> JsonReader = TJsonReaderFactory<>::Create(jsondata);
TSharedPtr<FJsonObject> rRoot;
if (FJsonSerializer::Deserialize(JsonReader, rRoot)) {
FFlightDatas FlightDatas;
FJsonObjectConverter::JsonObjectToUStruct(rRoot.ToSharedRef(), FFlightDatas::StaticStruct(), &FlightDatas, 0, 0);
}
示例
USTRUCT(BlueprintType)
struct FTrackDatasss
{
GENERATED_BODY()
UPROPERTY(BlueprintReadOnly)
FVector v=FVector::ZeroVector;
UPROPERTY(BlueprintReadOnly)
FRotator r=FRotator::ZeroRotator;
};
FTrackDatasss ss;
FString s;
FJsonObjectConverter::UStructToJsonObjectString(ss, s, 0, 0);
UJGF_FunLib::FunLib_Print("1: "+s);
{
"v":
{
"x": 0,
"y": 0,
"z": 0
},
"r":
{
"pitch": 0,
"yaw": 0,
"roll": 0
}
}