Przeglądaj źródła

添加yyjson测试,简单readme

ryancw 2 lat temu
rodzic
commit
da2c3e3e65

+ 7 - 9
README.md

@@ -7,9 +7,7 @@
 
 RyanJson是一个小巧的c语言json解析器,包含json文本文件解析 / 生成,**专门针对内存占用进行优化**。
 
-在内存占用减少40% - 60%的前提下,实现了大部分cJSON接口。
-
-运行速度和cJSON差不多,在json文本数据小于80k / 嵌套深度3000以下的json数据,RyanJson和cJSON因为小巧的设计速度要比别的json库快得多。
+相比cJSON内存占用减少30% - 60%,运行速度和cJSON差不多,在json文本数据小于80k / 嵌套深度3000以下的json数据,RyanJson和cJSON因为小巧的设计速度要比别的json库快得多。
 
 - **低内存占用**:使用动态扩展技术,在32位系统下,一个基础json节点仅占用8字节。
 - **开发人员友好**:仅有一个c文件和头文件轻松集成,hook函数方便自定义内存钩子。类cJSON的api,迁移成本低。
@@ -25,19 +23,19 @@ RyanJson是一个小巧的c语言json解析器,包含json文本文件解析 /
 
 测试代码可在本项目根目录查看。
 
-#### RFC 8295 标准测试,大部分嵌入式场景不会出现复杂的特殊json结构
+#### 内存占用测试
 
-***RyanJson和cJSON都不适合处理复杂的UTF-16字符集,如果项目需要兼容Unicode字符集,可以考虑yyjson / json-c***
+![image-20230822200726742](docs/assert/README.assert/image-20230822200726742.png)
 
-![image-20230822112554099](docs/assert/README.assert/image-20230822112554099.png)
+#### RFC 8295 标准测试,大部分嵌入式场景不会出现复杂的特殊json结构
 
-#### 内存占用测试
+***RyanJson和cJSON都不适合处理复杂的UTF-16字符集,如果项目需要兼容Unicode字符集,可以考虑yyjson / json-c***
 
-![image-20230822112757872](docs/assert/README.assert/image-20230822112757872.png)
+![image-20230822200717809](docs/assert/README.assert/image-20230822200717809.png)
 
 ## 4、文档
 
-文档可在 [Ryan组件库](http://localhost:8000/ryan-json)获取
+文档可在 [Ryan文档中心](https://ryan-cw-code.github.io/RyanDocs/)获取
 
 ## 5、联系
 

+ 6 - 1
RyanJsonExample.c

@@ -6,6 +6,7 @@
 #include <time.h>
 
 #include "./RyanJson/RyanJson.h"
+#include "./valloc/valloc.h"
 
 /**
  * @brief 生成json示例
@@ -115,9 +116,11 @@ int loadJsonExample()
     {
         printf("%s:%d 序列化与反序列化后的数据不对应\r\n", __FILE__, __LINE__);
         RyanJsonFree(str);
+        RyanJsonDelete(jsonRoot);
         return 0;
     }
-
+    RyanJsonFree(str);
+    
     // 将序列化的数据以有格式样式打印出来
     uint32_t len = 0;
     str = RyanJsonPrint(jsonRoot, 250, RyanJsonTrue, &len);
@@ -132,6 +135,8 @@ int loadJsonExample()
 
 int RyanJsonExample(void)
 {
+    RyanJsonInitHooks(v_malloc, v_free, v_realloc);
+
     printf("\r\n--------------------------- RyanJson 生成示例 --------------------------\r\n");
     createJsonExample();
 

Plik diff jest za duży
+ 50 - 0
RyanJsonMemoryFootprintTest.c


+ 5 - 3
RyanJsonTest.c

@@ -63,6 +63,7 @@ static int rootNodeCheckTest(RyanJson_t json)
         printf("%s:%d 解析失败\r\n", __FILE__, __LINE__);
         return 0;
     }
+
     return 1;
 }
 
@@ -74,6 +75,7 @@ int itemNodeCheckTest(RyanJson_t json)
         printf("%s:%d 解析失败\r\n", __FILE__, __LINE__);
         return 0;
     }
+    
     return 1;
 }
 
@@ -549,14 +551,14 @@ int changeJsonTest()
     if (RyanJsonGetObjectToKey(json, "inter"))
     {
         printf("%s:%d 解析失败\r\n", __FILE__, __LINE__);
-        return 0;
+        goto err;
     }
 
     RyanJsonDeleteByKey(json, "double");
     if (RyanJsonGetObjectToKey(json, "double"))
     {
         printf("%s:%d 解析失败\r\n", __FILE__, __LINE__);
-        return 0;
+        goto err;
     }
 
     /**
@@ -567,7 +569,7 @@ int changeJsonTest()
     if (RyanJsonGetSize(RyanJsonGetObjectToKey(json, "array")) != 5)
     {
         printf("%s:%d 解析失败\r\n", __FILE__, __LINE__);
-        return 0;
+        goto err;
     }
 
     // str = RyanJsonPrint(json, 1024, RyanJsonTrue, NULL);

BIN
docs/assert/README.assert/image-20230822112554099.png


BIN
docs/assert/README.assert/image-20230822112757872.png


BIN
docs/assert/README.assert/image-20230822200717809.png


BIN
docs/assert/README.assert/image-20230822200726742.png


+ 4 - 2
main.c

@@ -2,6 +2,7 @@
 #include <stdint.h>
 #include <stdlib.h>
 #include "./RyanJson/RyanJson.h"
+#include "./valloc/valloc.h"
 
 void printfTitle(char *title)
 {
@@ -25,11 +26,12 @@ int main(void)
     printfTitle("RyanJson 接口测试程序");
     RyanJsonTest();
 
-    printfTitle("RyanJson / cJSON 内存对比程序");
+    printfTitle("RyanJson / cJSON / yyjson 内存对比程序");
     RyanJsonMemoryFootprintTest();
 
-    printfTitle("RyanJson / cJSON RFC8259标准测试");
+    printfTitle("RyanJson / cJSON / yyjson RFC8259标准测试");
     RFC8259JsonTest();
 
+    displayMem();
     return 0;
 }

Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików