XFEExtension
【DLL】XFE各类拓展是一个C#的DLL库,旨在优化C#代码中常用语句的使用,并提供更简洁的访问方式,同时提供Xunit测试框架,快速搭建服务器/客户端,免费ChatGPTAPI接口,免费通讯服务器,XFE下载器,新增格式等
关注
0
Fork
0
Star
0
返回提交历史
Modified
README.md
+5
-4
Modified
XFEExtension.NetCore.Test/Program.cs
+10
-5
Modified
XFEExtension.NetCore/XFEExtension.NetCore.csproj
+3
-3
Modified
XFEExtension.NetCore/XFETransform/JsonConverter/JsonNodeConverter.cs
+2
-2
Modified
XFEExtension.NetCore/XFETransform/JsonConverter/QueryableJsonNode.cs
+6
-0
XFEstudio/XFEExtension
fix-修复了Json解析时,连续出现对象的bug add-现在JsonNode查询可以使用GetChildNodes方法获取枚举列表
d8900b6
代码差异
5 个文件
+26
-14
@@ -45,15 +45,16 @@ var jsonString = """
45
45
{"code":0,"message":"0","data":{"archives":[{"id":0,"text":"这是Json的使用教程文档","trash":"垃圾文本1"},{"id":1,"text":"在这里,你将了解JsonNode的查询方式","trash":"垃圾文本2"},{"id":2,"text":"Hello World!","trash":"垃圾文本3"}]}}
46
46
""";
47
47
var jsonNode = (QueryableJsonNode)targetJsonString;
48
var packageList = jsonNode["data"]["archives"]["package:list", "id", "text"].PackageInListObject();
48
var packageList = jsonNode["data"]["archives"]["package:list", "id", "text"].PackageInListObject();//打包列表
49
49
foreach (var node in packageList)
50
50
{
51
Console.WriteLine($"ID:{node.ElementAt(0).Value.Value}\tDocument:{node.ElementAt(1).Value.Value}");
51
Console.WriteLine($"ID:{node["id"]}\tDocument:{node["text"]}");//直接提取属性
52
52
}
53
var packageObject = jsonNode["package:object", "code", "message"].PackageInListObject();
53
54
var packageObject = jsonNode["package:object", "code", "message"].PackageInListObject();//打包对象
54
55
foreach (var node in packageObject)
55
56
{
56
Console.WriteLine($"PropertyName:{node.Key}\tValue:{node.Value.Value}\tValueType:{node.Value.ValueType}");
57
Console.WriteLine($"PropertyName:{node.Key}\tValue:{node.Value}\tValueType:{node.Value.ValueType}");//遍历属性
57
58
}
58
59
```
59
60
@@ -1,20 +1,25 @@
1
using XFEExtension.NetCore.XFEChatGPT;
1
using XFEExtension.NetCore.FileExtension;
2
using XFEExtension.NetCore.XFEChatGPT;
2
3
using XFEExtension.NetCore.XFETransform.JsonConverter;
3
4
4
5
internal class Program
5
6
{
6
7
public static MemorableXFEChatGPT XFEChatGPT { get; set; } = new MemorableXFEChatGPT();
7
8
public static string CurrentDialogID { get; set; } = Guid.NewGuid().ToString();
8
private static async Task Main(string[] args)
9
private static void Main(string[] args)
9
10
{
10
11
using var client = new HttpClient();
11
12
client.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36 Edg/129.0.0.0");
12
13
client.DefaultRequestHeaders.Add("Origin", "https://www.piyao.org.cn");
13
14
client.DefaultRequestHeaders.Add("Referer", "https://www.piyao.org.cn/");
14
QueryableJsonNode jsonNode = await client.GetStringAsync($"https://so.news.cn/xhtvapp/rumourSearch?title={Uri.EscapeDataString(Console.ReadLine())}&pageNum=1&timeInterval=&startTime=&endTime=&typeName=&pageSize=100&sort=-2&callback=?");
15
foreach (var nodes in jsonNode["content"]["resultList"]["package:list", "title", "thirdCheckTime", "url"].PackageInListObject())
15
QueryableJsonNode jsonNode = @"C:\Users\XFEstudio\Desktop\work\C#\GitHub\XFEstudio\XUnitConsole\XUnitConsole\bin\Debug\net8.0\Json存储.txt".ReadOut()!;
16
//foreach (var node in jsonNode["data"]["package:list","name", "avatar_url_template"].PackageInListObject())
17
//{
18
// Console.WriteLine($"名称:{node["name"]}\tID:{node["avatar_url_template"]}");
19
//}
20
foreach (var node in jsonNode["data"].GetChildNodes())
16
21
{
17
Console.WriteLine($"标题:{nodes["title"].Value}\t发布时间:{nodes["thirdCheckTime"].Value}\t网址:{nodes["url"].Value}");
22
Console.WriteLine($"名称:{node["name"]}");
18
23
}
19
24
}
20
25
@@ -5,7 +5,7 @@
5
5
<ImplicitUsings>enable</ImplicitUsings>
6
6
<Nullable>enable</Nullable>
7
7
<GenerateDocumentationFile>True</GenerateDocumentationFile>
8
<Version>3.1.3</Version>
8
<Version>3.1.4</Version>
9
9
<Title>XFEExtension</Title>
10
10
<RepositoryUrl>https://github.com/XFEstudio/XFEExtension</RepositoryUrl>
11
11
<AnalysisLevel>latest</AnalysisLevel>
@@ -20,8 +20,8 @@
20
20
<PackageTags>XFE;拓展;GPT;Server;服务器;测试;XFEExtension</PackageTags>
21
21
<PackageReleaseNotes>## 调整
22
22
23
增加ValueNode的ToString重写方法
24
现在Json解析不会被无关的空格换行等任何字符串干扰
23
修复了Json解析时,连续出现对象的bug
24
现在JsonNode查询可以使用GetChildNodes方法获取枚举列表
25
25
26
26
## 新增
27
27
@@ -41,7 +41,7 @@ public class JsonNodeConverter(string jsonString)
41
41
{
42
42
currentSymbol = JsonSymbol.Brace;
43
43
currentState = CurrentState.BeforeProperty;
44
if (jsonNode.DescendingNodes.Count == 0)
44
if (jsonNode.DescendingNodes.Count == 0 && lastSymbol != JsonSymbol.Colon)
45
45
break;
46
46
currentLayer++;
47
47
if (currentPosition.Count < currentLayer + 2)
@@ -271,7 +271,7 @@ public class JsonNodeConverter(string jsonString)
271
271
currentPropertyValue = currentPropertyValue.Replace("\"", "");
272
272
return ValueType.Text;
273
273
}
274
else if(currentPropertyValue.Equals("null", StringComparison.CurrentCultureIgnoreCase))
274
else if (currentPropertyValue.Equals("null", StringComparison.CurrentCultureIgnoreCase))
275
275
{
276
276
return ValueType.Null;
277
277
}
@@ -89,6 +89,12 @@ public class QueryableJsonNode(JsonNode jsonNode) : INodeBase, IQueryableJsonNod
89
89
/// <exception cref="NullReferenceException"></exception>
90
90
public Dictionary<string, ValueNode> PackageObject() => InnerValue is Dictionary<string, ValueNode> innerValue ? innerValue : throw new NullReferenceException();
91
91
/// <summary>
92
/// 获取所有子节点
93
/// </summary>
94
/// <returns></returns>
95
/// <exception cref="InvalidOperationException"></exception>
96
public IEnumerable<QueryableJsonNode> GetChildNodes() => OriginalNode is JsonComplexPropertyNode jsonComplexPropertyNode ? jsonComplexPropertyNode.DescendingNodes.Select(node => new QueryableJsonNode(node)) : throw new InvalidOperationException("无法将非复杂节点转为节点列表");
97
/// <summary>
92
98
/// 隐式将Json字符串转换为可查询节点
93
99
/// </summary>
94
100
/// <param name="jsonString"></param>