UE4 Josn

旧城等待, 2023-02-16 14:29 54阅读 0赞

三种形式的json文件

1、

  1. [
  2. "6L42J5RVAVZNOPTUKE888888",
  3. "6L4JOEZVAVQE6PTULQ888888"
  4. ]
  5. TMap<FString, TSharedPtr<FJsonValue>> InstanceNameWithJsonValue;
  6. if (FPaths::FileExists(ArchiMeta))
  7. {
  8. FString JsonString;
  9. if (FFileHelper::LoadFileToString(JsonString, *ArchiMeta))
  10. {
  11. TArray<TSharedPtr<FJsonValue>> JsonObjects;
  12. TSharedRef<TJsonReader<>> Reader = TJsonReaderFactory<>::Create(JsonString);
  13. if (FJsonSerializer::Deserialize(Reader, JsonObjects))
  14. {
  15. for (auto JsonObject : JsonObjects)
  16. {
  17. float CurrPolygonOffset = 0;
  18. FString Group = JsonObject->AsString()
  19. }
  20. }
  21. }
  22. }

2、

  1. [
  2. {
  3. "group": "MA2OKDNMDEDXCAABAAAAABI8_beam_mesh_143124_0",
  4. "category": "finishing",
  5. "type": "beam",
  6. "storey": 1,
  7. "roomID": "NULL",
  8. "species": "NULL"
  9. },
  10. {
  11. "group": "MA2OKDNMDEDXCAABAAAAABI8_beam_mesh_143138_0",
  12. "category": "finishing",
  13. "type": "beam",
  14. "storey": 1,
  15. "roomID": "NULL",
  16. "species": "NULL"
  17. }
  18. ]
  19. TMap<FString, TSharedPtr<FJsonValue>> InstanceNameWithJsonValue;
  20. if (FPaths::FileExists(ArchiMeta))
  21. {
  22. FString JsonString;
  23. if (FFileHelper::LoadFileToString(JsonString, *ArchiMeta))
  24. {
  25. TArray<TSharedPtr<FJsonValue>> JsonObjects;
  26. TSharedRef<TJsonReader<>> Reader = TJsonReaderFactory<>::Create(JsonString);
  27. if (FJsonSerializer::Deserialize(Reader, JsonObjects))
  28. {
  29. for (auto JsonObject : JsonObjects)
  30. {
  31. float CurrPolygonOffset = 0;
  32. FString Group = JsonObject->AsObject()->GetStringField("group");
  33. FString AssetName;
  34. FString Component;
  35. bool HasComponent = JsonObject->AsObject()->TryGetStringField("component", Component);
  36. if (HasComponent)
  37. {
  38. AssetName = Component;
  39. }
  40. else
  41. {
  42. AssetName = Group;// AvatarString(Group);
  43. }
  44. InstanceNameWithJsonValue.Emplace(AssetName, JsonObject);
  45. }
  46. }
  47. }
  48. }

3、

  1. {
  2. "fp": "c-007",
  3. "mesh_id": "6CF2J3ETDD522EK6KE888888"
  4. }
  5. TSharedPtr<FJsonObject> MeshStatusJsonObject;
  6. FString JsonString1;
  7. if (FFileHelper::LoadFileToString(JsonString1, *FurnitureMeta))
  8. {
  9. TSharedRef<TJsonReader<>> Reader = TJsonReaderFactory<>::Create(JsonString1);
  10. if (FJsonSerializer::Deserialize(Reader, MeshStatusJsonObject))
  11. {
  12. //do nothing
  13. }
  14. }

已经是JsonObject,可以直接使用了。

  1. if (FPaths::FileExists(filename))
  2. {
  3. FString JsonString;
  4. if (FFileHelper::LoadFileToString(JsonString, *filename))
  5. {
  6. TSharedPtr<FJsonObject> JsonObject;
  7. TSharedRef<TJsonReader<>> Reader = TJsonReaderFactory<>::Create(JsonString);
  8. if (FJsonSerializer::Deserialize(Reader, JsonObject))
  9. {
  10. TMap<FString, TSharedPtr<FJsonValue>> KeyValue = JsonObject->Values;
  11. for (auto It = KeyValue.CreateConstIterator(); It; ++It)
  12. {
  13. //FString Key = *It.Key();
  14. FString Key = It->Key;
  15. UE_LOG(LogImportMat, Display, TEXT("key:%s"),*Key);
  16. FString Value = (*It->Value).AsString();
  17. UE_LOG(LogImportMat, Display, TEXT("value:%s"),*Value);
  18. FString Value1 = (*KeyValue.Find(Key))->AsString();
  19. UE_LOG(LogImportMat, Display, TEXT("value:%s"),*Value1);
  20. break;
  21. //CurrImportData = NewObject<UAutomatedAssetImportData>(this);
  22. }
  23. }
  24. }
  25. }

发表评论

表情:
评论列表 (有 0 条评论,54人围观)

还没有评论,来说两句吧...

相关阅读

    相关 UE4 EventTick

    在做小地图时遇到的问题,小地图中的位置图标随人物的移动而移动。 我的做法是在widget中设置图片,在人物蓝图中刷新,算法写在任务蓝图中,结果会出现偶然bug,这太郁闷了。