MatureJsonModule.cpp 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. // Copyright aXiuShen. All Rights Reserved.
  2. #include "MatureJsonModule.h"
  3. #include "MatureJsonLog.h"
  4. #include "json_cast.hpp"
  5. #include "MatureJsonValue.h"
  6. #include "MatureJsonObject.h"
  7. #include "MatureJsonList.h"
  8. #define LOCTEXT_NAMESPACE "FBaseBrowserModule"
  9. DEFINE_LOG_CATEGORY(MatureJsonLog);
  10. FString value_to_string (FMatureJsonValue Value) {
  11. // 任意 value节点 均可以序列化字符串
  12. FString sub_string = Value.ToObject().ToValue(TEXT("小说情侣")).SaveString();
  13. // 跟节点 做序列化
  14. FString root_string = Value.SaveString();
  15. return root_string;
  16. }
  17. FString value_object_loop (FMatureJsonValue Value) {
  18. EMatureJsonType type;
  19. FString Key;
  20. FMatureJsonObjectIterator it = Value.ToObject();
  21. for (; it.IsValid(); it++) {
  22. Key = it.Key();
  23. type = it.Value().GetType();
  24. }
  25. return FString();
  26. }
  27. void list_encode_example(FMatureJsonList List) {
  28. FMatureJsonObject Object;
  29. Object = List.AddObject();
  30. Object.AddList(TEXT("省份"))
  31. .AddValue(TEXT("北京"))
  32. .AddValue(TEXT("香港"))
  33. .AddValue(TEXT("澳门"))
  34. .AddValue(TEXT("台湾省"))
  35. .AddValue(TEXT("四川"));
  36. FMatureJsonObject Object2 /*= List.AddObject()*/;
  37. Object2.AddList(TEXT("艺术家"))
  38. .AddValue(TEXT("陈道明"))
  39. .AddValue(TEXT("成龙"))
  40. .AddValue(TEXT("刘德华"))
  41. .AddValue(TEXT("张艺谋"))
  42. .AddValue(TEXT("刀郎"));
  43. List.AddValue(Object2);
  44. }
  45. FMatureJsonValue object_encode_example() {
  46. FMatureJsonValue Value;
  47. FMatureJsonObject Object;
  48. FMatureJsonObject Object2;
  49. FMatureJsonObject Object3;
  50. FMatureJsonList List;
  51. TMap<FString, double> map_doble = { {TEXT("w"),123.0},{TEXT("e"),123.0},{TEXT("r"),123.0} };
  52. TMap<FString, FString> map_string = { {TEXT("郭靖"),TEXT("黄蓉")},{TEXT("杨过"),TEXT("小龙女")} };
  53. Value.ToObject()
  54. .AddValue(TEXT("alpha"), 0.25)
  55. .AddValue(TEXT("悟空租车"), TEXT("自驾游"))
  56. .AddValue(TEXT("color"), 0x00FFFFFF)
  57. .AddValue(TEXT("爱好和平"), true)
  58. .AddValue(TEXT("当前时间"), FDateTime::Now());
  59. Object = Value.ToObject()
  60. .AddObject(TEXT("对象属性"));
  61. Object.AddValue(map_doble);
  62. Object3.AddValue(map_string);
  63. Object2 = Value.ToObject()
  64. .AddObject(TEXT("小说情侣"))
  65. .AddValue(Object3);
  66. list_encode_example(List);
  67. Value.ToObject()
  68. .AddValue(TEXT("中国"), List);
  69. return Value;
  70. }
  71. void decode_example(FMatureJsonValue Root) {
  72. FMatureJsonObject Object = Root.ToObject();
  73. float alpha = Object.ToValue(TEXT("alpha")).ToFloat();
  74. int32 color = Object.ToValue(TEXT("color")).ToInt32();
  75. FMatureJsonList china = Object.ToList(TEXT("中国"));
  76. FString china_str = Object.ToValue(TEXT("中国")).SaveString();
  77. FMatureJsonList list_province = china.ToObject(0).ToList(TEXT("省份"));
  78. FString province_str = china.ToObject(0).ToValue(TEXT("省份")).SaveString();
  79. FString taiwan_province = list_province.ToValue(3).ToString();
  80. taiwan_province.Append(TEXT(""));
  81. }
  82. void FMatureJsonModule::StartupModule()
  83. {
  84. #if WITH_EDITOR
  85. FMatureJsonValue Value = object_encode_example();
  86. value_to_string(Value);
  87. decode_example(Value);
  88. value_object_loop(Value);
  89. #endif
  90. }
  91. void FMatureJsonModule::ShutdownModule()
  92. {
  93. }
  94. #undef LOCTEXT_NAMESPACE
  95. IMPLEMENT_MODULE(FMatureJsonModule, MatureJson)