XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEExtension

【DLL】XFE各类拓展是一个C#的DLL库,旨在优化C#代码中常用语句的使用,并提供更简洁的访问方式,同时提供Xunit测试框架,快速搭建服务器/客户端,免费ChatGPTAPI接口,免费通讯服务器,XFE下载器,新增格式等

公开
关注 0 Fork 0 Star 0
返回提交历史

XFEstudio/XFEExtension

添加部分Json转换注入

bfaf33a
XFE工作室室长 <xfe18827675401@126.com>
提交于

代码差异

5 个文件 +141 -5
Modified XFEExtension.NetCore.Analyzer.Test/Program.cs +4 -1
@@ -1,4 +1,7 @@
1 1 using XFEExtension.NetCore.StringExtension;
2 using XFEExtension.NetCore.XFETransform;
3 using XFEExtension.NetCore.XFETransform.ObjectInfoAnalyzer;
4 using XFEExtension.NetCore.XFETransform.StringConverter;
2 5
3 6 namespace XFEExtension.NetCore.Analyzer.Test;
4 7
@@ -10,6 +13,6 @@ internal class Program
10 13 {
11 14 Tags = [["123", "321"], ["1234567", "7654321"]]
12 15 };
13 testClass.X();
16 XFEConverter.GetObjectInfo(new JsonTransformer(), "Json序列化对象", ObjectPlace.Main, 0, typeof(TestClass), testClass).OutPutObject().CW();
14 17 }
15 18 }
Modified XFEExtension.NetCore/XFETransform/ObjectInfoAnalyzer/ObjectPlace.cs +8 -0
@@ -26,10 +26,18 @@ public enum ObjectPlace
26 26 /// </summary>
27 27 List,
28 28 /// <summary>
29 /// 列表成员
30 /// </summary>
31 ListMember,
32 /// <summary>
29 33 /// 数组
30 34 /// </summary>
31 35 Array,
32 36 /// <summary>
37 /// 数组成员
38 /// </summary>
39 ArrayMember,
40 /// <summary>
33 41 /// 其他
34 42 /// </summary>
35 43 Other
Added XFEExtension.NetCore/XFETransform/StringConverter/JsonTransformer.cs +115 -0
@@ -0,0 +1,115 @@
1 using XFEExtension.NetCore.XFETransform.ObjectInfoAnalyzer;
2
3 namespace XFEExtension.NetCore.XFETransform.StringConverter;
4
5 /// <summary>
6 /// Json转换器
7 /// </summary>
8 public class JsonTransformer : StringConverter
9 {
10 /// <summary>
11 /// 输出Json对象信息
12 /// </summary>
13 /// <param name="objectInfo"></param>
14 /// <returns></returns>
15 public override string OutPutObject(IObjectInfo objectInfo)
16 {
17 var outPutString = string.Empty;
18 var tabString = string.Empty;
19 for (int k = 0; k < objectInfo.Layer; k++)
20 {
21 tabString += " ";
22 }
23 if (objectInfo.IsBasicType)
24 {
25 if (IsEnumerable(objectInfo))
26 {
27 if (objectInfo.Value is null)
28 {
29 outPutString += "null";
30 }
31 else
32 {
33 outPutString += objectInfo.Value;
34 }
35 }
36 else
37 {
38 if (objectInfo.Value is null)
39 {
40 outPutString += $"{tabString}\"{objectInfo.Name}\": null";
41 }
42 else
43 {
44 outPutString += $"{tabString}\"{objectInfo.Name}\": {objectInfo.Value}";
45 }
46 }
47 }
48 else
49 {
50 if (objectInfo.Layer == 0)
51 {
52 outPutString += objectInfo.SubObjects is not null ? $$"""
53 {
54 {{OutPutSubObjects(objectInfo.SubObjects)}}
55 }
56 """ : "null";
57 }
58 else
59 {
60 if (objectInfo.SubObjects is not null)
61 outPutString += OutPutSubObjects(objectInfo.SubObjects);
62 }
63 }
64 return outPutString;
65 }
66
67 internal override string OutPutSubObjects(ISubObjects subObjects)
68 {
69 var outString = string.Empty;
70 for (int i = 0; i < subObjects.Count; i++)
71 {
72 var obj = subObjects[i];
73 var tabString = string.Empty;
74 for (int k = 0; k < obj.Layer; k++)
75 {
76 tabString += " ";
77 }
78 outString += tabString;
79 string? currentConnectString;
80 if (i == subObjects.Count - 1)
81 {
82 currentConnectString = "\n";
83 }
84 else
85 {
86 currentConnectString = ",\n";
87 }
88 if (obj.IsBasicType)
89 {
90 outString += obj.OutPutObject();
91 outString += currentConnectString;
92 }
93 else
94 {
95 if (IsEnumerable(obj))
96 outString += obj is not null ? $$"""
97 [{{OutPutObject(obj)}}]{{currentConnectString}}
98 """ : "null";
99 else
100 outString += obj is not null ? $$"""
101 {{tabString}}{
102 {{tabString}}{{OutPutObject(obj)}}
103 {{tabString}}}
104 """ : "null";
105 }
106 }
107 if (outString.Length > 0 && outString[^1] == '\n')
108 {
109 outString = outString[..^1];
110 }
111 return outString;
112 }
113
114 internal bool IsEnumerable(IObjectInfo objectInfo) => objectInfo.ObjectPlace == ObjectPlace.Array || objectInfo.ObjectPlace == ObjectPlace.List || objectInfo.ObjectPlace == ObjectPlace.ArrayMember || objectInfo.ObjectPlace == ObjectPlace.ListMember;
115 }
Modified XFEExtension.NetCore/XFETransform/StringConverter/ObjectAnalyzer.cs +5 -3
@@ -5,14 +5,14 @@ namespace XFEExtension.NetCore.XFETransform.StringConverter;
5 5 /// <summary>
6 6 /// 对象分析类
7 7 /// </summary>
8 public class ObjectAnalyzer : IStringConverter
8 public class ObjectAnalyzer : StringConverter
9 9 {
10 10 /// <summary>
11 11 /// 分析对象
12 12 /// </summary>
13 13 /// <param name="objectInfo"></param>
14 14 /// <returns></returns>
15 public string OutPutObject(IObjectInfo objectInfo)
15 public override string OutPutObject(IObjectInfo objectInfo)
16 16 {
17 17 var outPutString = string.Empty;
18 18 if (objectInfo.IsBasicType)
@@ -47,7 +47,7 @@ public class ObjectAnalyzer : IStringConverter
47 47 return outPutString;
48 48 }
49 49
50 internal static string OutPutSubObjects(ISubObjects subObjects)
50 internal override string OutPutSubObjects(ISubObjects subObjects)
51 51 {
52 52 var outString = string.Empty;
53 53 for (int i = 0; i < subObjects.Count; i++)
@@ -97,7 +97,9 @@ public class ObjectAnalyzer : IStringConverter
97 97 ObjectPlace.Field => "[字段]",
98 98 ObjectPlace.Main => "[主体]",
99 99 ObjectPlace.Array => "[数组]",
100 ObjectPlace.ArrayMember => "[数组成员]",
100 101 ObjectPlace.List => "[列表]",
102 ObjectPlace.ListMember => "[列表成员]",
101 103 ObjectPlace.Enum => "[枚举]",
102 104 ObjectPlace.Other => "[其他]",
103 105 _ => string.Empty,
Modified XFEExtension.NetCore/XFETransform/StringConverter/StringConverter.cs +9 -1
@@ -2,8 +2,16 @@
2 2
3 3 namespace XFEExtension.NetCore.XFETransform.StringConverter;
4 4
5 internal abstract class StringConverter : IStringConverter
5 /// <summary>
6 /// 字符串转换器
7 /// </summary>
8 public abstract class StringConverter : IStringConverter
6 9 {
10 /// <summary>
11 /// 输出对象信息
12 /// </summary>
13 /// <param name="objectInfo"></param>
14 /// <returns></returns>
7 15 public abstract string OutPutObject(IObjectInfo objectInfo);
8 16 internal abstract string OutPutSubObjects(ISubObjects subObjects);
9 17 }