mirror of
https://github.com/ReneLergner/WPinternals.git
synced 2026-06-14 03:16:40 +10:00
Migrate from Newtonsoft.Json.NET to System.Text.Json
This commit is contained in:
+43
-37
@@ -19,11 +19,10 @@
|
|||||||
// DEALINGS IN THE SOFTWARE.
|
// DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
using MadWizard.WinUSBNet;
|
using MadWizard.WinUSBNet;
|
||||||
using Newtonsoft.Json;
|
|
||||||
using Newtonsoft.Json.Linq;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Text.Json;
|
||||||
|
|
||||||
namespace WPinternals
|
namespace WPinternals
|
||||||
{
|
{
|
||||||
@@ -44,7 +43,7 @@ namespace WPinternals
|
|||||||
catch { }
|
catch { }
|
||||||
}
|
}
|
||||||
|
|
||||||
private JToken ExecuteJsonMethodAsJsonToken(string JsonMethod, Dictionary<string, object> Params, string ResultElement)
|
private JsonElement? ExecuteJsonMethodAsJsonToken(string JsonMethod, Dictionary<string, object> Params, string ResultElement)
|
||||||
{
|
{
|
||||||
byte[] Buffer;
|
byte[] Buffer;
|
||||||
int Length;
|
int Length;
|
||||||
@@ -66,72 +65,79 @@ namespace WPinternals
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
@params.Add("MessageVersion", 0);
|
@params.Add("MessageVersion", 0);
|
||||||
string Request = JsonConvert.SerializeObject(new { jsonrpc, id, method, @params });
|
string Request = JsonSerializer.Serialize(new { jsonrpc, id, method, @params });
|
||||||
Device.OutputPipe.Write(System.Text.Encoding.ASCII.GetBytes(Request));
|
Device.OutputPipe.Write(System.Text.Encoding.ASCII.GetBytes(Request));
|
||||||
|
|
||||||
Buffer = new byte[0x10000];
|
Buffer = new byte[0x10000];
|
||||||
Length = Device.InputPipe.Read(Buffer);
|
Length = Device.InputPipe.Read(Buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
Newtonsoft.Json.Linq.JObject ResultMessage = Newtonsoft.Json.Linq.JObject.Parse(System.Text.ASCIIEncoding.ASCII.GetString(Buffer, 0, Length));
|
JsonDocument ResultMessage = JsonDocument.Parse(System.Text.ASCIIEncoding.ASCII.GetString(Buffer, 0, Length));
|
||||||
|
|
||||||
JToken ResultToken = ResultMessage.Root.SelectToken("result");
|
try
|
||||||
if ((ResultToken == null) || (ResultElement == null)) return null;
|
{
|
||||||
return ResultToken.SelectToken(ResultElement);
|
JsonElement? ResultToken = ResultMessage.RootElement.GetProperty("result");
|
||||||
|
if ((ResultToken == null) || (ResultElement == null)) return null;
|
||||||
|
return ResultToken.Value.GetProperty(ResultElement);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ExecuteJsonMethod(string JsonMethod, Dictionary<string, object> Params)
|
public void ExecuteJsonMethod(string JsonMethod, Dictionary<string, object> Params)
|
||||||
{
|
{
|
||||||
JToken Token = ExecuteJsonMethodAsJsonToken(JsonMethod, Params, null);
|
JsonElement? Token = ExecuteJsonMethodAsJsonToken(JsonMethod, Params, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public string ExecuteJsonMethodAsString(string JsonMethod, Dictionary<string, object> Params, string ResultElement)
|
public string ExecuteJsonMethodAsString(string JsonMethod, Dictionary<string, object> Params, string ResultElement)
|
||||||
{
|
{
|
||||||
JToken Token = ExecuteJsonMethodAsJsonToken(JsonMethod, Params, ResultElement);
|
JsonElement? Token = ExecuteJsonMethodAsJsonToken(JsonMethod, Params, ResultElement);
|
||||||
if (Token == null) return null;
|
if (Token == null) return null;
|
||||||
return Token.Value<string>();
|
return Token.Value.GetString();
|
||||||
}
|
}
|
||||||
|
|
||||||
public string ExecuteJsonMethodAsString(string JsonMethod, string ResultElement)
|
public string ExecuteJsonMethodAsString(string JsonMethod, string ResultElement)
|
||||||
{
|
{
|
||||||
JToken Token = ExecuteJsonMethodAsJsonToken(JsonMethod, null, ResultElement);
|
JsonElement? Token = ExecuteJsonMethodAsJsonToken(JsonMethod, null, ResultElement);
|
||||||
if (Token == null) return null;
|
if (Token == null) return null;
|
||||||
return Token.Value<string>();
|
return Token.Value.GetString();
|
||||||
}
|
}
|
||||||
|
|
||||||
public int ExecuteJsonMethodAsInteger(string JsonMethod, Dictionary<string, object> Params, string ResultElement)
|
public int ExecuteJsonMethodAsInteger(string JsonMethod, Dictionary<string, object> Params, string ResultElement)
|
||||||
{
|
{
|
||||||
JToken Token = ExecuteJsonMethodAsJsonToken(JsonMethod, Params, ResultElement);
|
JsonElement? Token = ExecuteJsonMethodAsJsonToken(JsonMethod, Params, ResultElement);
|
||||||
if (Token == null) return 0;
|
if (Token == null) return 0;
|
||||||
return Token.Value<int>();
|
return Token.Value.GetInt32();
|
||||||
}
|
}
|
||||||
|
|
||||||
public int ExecuteJsonMethodAsInteger(string JsonMethod, string ResultElement)
|
public int ExecuteJsonMethodAsInteger(string JsonMethod, string ResultElement)
|
||||||
{
|
{
|
||||||
JToken Token = ExecuteJsonMethodAsJsonToken(JsonMethod, null, ResultElement);
|
JsonElement? Token = ExecuteJsonMethodAsJsonToken(JsonMethod, null, ResultElement);
|
||||||
if (Token == null) return 0;
|
if (Token == null) return 0;
|
||||||
return Token.Value<int>();
|
return Token.Value.GetInt32();
|
||||||
}
|
}
|
||||||
|
|
||||||
public byte[] ExecuteJsonMethodAsBytes(string JsonMethod, Dictionary<string, object> Params, string ResultElement)
|
public byte[] ExecuteJsonMethodAsBytes(string JsonMethod, Dictionary<string, object> Params, string ResultElement)
|
||||||
{
|
{
|
||||||
JToken Token = ExecuteJsonMethodAsJsonToken(JsonMethod, Params, ResultElement);
|
JsonElement? Token = ExecuteJsonMethodAsJsonToken(JsonMethod, Params, ResultElement);
|
||||||
if (Token == null) return null;
|
if (Token == null) return null;
|
||||||
return Token.Values<byte>().ToArray();
|
return Token.Value.EnumerateArray().Select(x => x.GetByte()).ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
public byte[] ExecuteJsonMethodAsBytes(string JsonMethod, string ResultElement)
|
public byte[] ExecuteJsonMethodAsBytes(string JsonMethod, string ResultElement)
|
||||||
{
|
{
|
||||||
JToken Token = ExecuteJsonMethodAsJsonToken(JsonMethod, null, ResultElement);
|
JsonElement? Token = ExecuteJsonMethodAsJsonToken(JsonMethod, null, ResultElement);
|
||||||
if (Token == null) return null;
|
if (Token == null) return null;
|
||||||
return Token.Values<byte>().ToArray();
|
return Token.Value.EnumerateArray().Select(x => x.GetByte()).ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool? ExecuteJsonMethodAsBoolean(string JsonMethod, string ResultElement)
|
public bool? ExecuteJsonMethodAsBoolean(string JsonMethod, string ResultElement)
|
||||||
{
|
{
|
||||||
JToken Token = ExecuteJsonMethodAsJsonToken(JsonMethod, null, ResultElement);
|
JsonElement? Token = ExecuteJsonMethodAsJsonToken(JsonMethod, null, ResultElement);
|
||||||
if (Token == null) return null;
|
if (Token == null) return null;
|
||||||
return Token.Value<bool>();
|
return Token.Value.GetBoolean();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ExecuteJsonMethodAsync(string JsonMethod, Dictionary<string, object> Params)
|
public void ExecuteJsonMethodAsync(string JsonMethod, Dictionary<string, object> Params)
|
||||||
@@ -153,7 +159,7 @@ namespace WPinternals
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
@params.Add("MessageVersion", 0);
|
@params.Add("MessageVersion", 0);
|
||||||
string Request = JsonConvert.SerializeObject(new { jsonrpc, id, method, @params });
|
string Request = JsonSerializer.Serialize(new { jsonrpc, id, method, @params });
|
||||||
|
|
||||||
byte[] OutBuffer = System.Text.Encoding.ASCII.GetBytes(Request);
|
byte[] OutBuffer = System.Text.Encoding.ASCII.GetBytes(Request);
|
||||||
Device.OutputPipe.BeginWrite(OutBuffer, 0, OutBuffer.Length, (AsyncResultWrite) =>
|
Device.OutputPipe.BeginWrite(OutBuffer, 0, OutBuffer.Length, (AsyncResultWrite) =>
|
||||||
@@ -172,51 +178,51 @@ namespace WPinternals
|
|||||||
|
|
||||||
public void ExecuteJsonMethodAsStringAsync(string JsonMethod, Dictionary<string, object> Params, string ResultElement, object State, JsonMethodCallbackString Callback)
|
public void ExecuteJsonMethodAsStringAsync(string JsonMethod, Dictionary<string, object> Params, string ResultElement, object State, JsonMethodCallbackString Callback)
|
||||||
{
|
{
|
||||||
ExecuteJsonMethodAsTokenAsync(JsonMethod, Params, ResultElement, State, (ReturnState, Token) => { Callback(ReturnState, Token.Value<string>()); });
|
ExecuteJsonMethodAsTokenAsync(JsonMethod, Params, ResultElement, State, (ReturnState, Token) => { Callback(ReturnState, Token.Value.GetRawText()); });
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ExecuteJsonMethodAsStringAsync(string JsonMethod, string ResultElement, object State, JsonMethodCallbackString Callback)
|
public void ExecuteJsonMethodAsStringAsync(string JsonMethod, string ResultElement, object State, JsonMethodCallbackString Callback)
|
||||||
{
|
{
|
||||||
ExecuteJsonMethodAsTokenAsync(JsonMethod, null, ResultElement, State, (ReturnState, Token) => { Callback(ReturnState, Token.Value<string>()); });
|
ExecuteJsonMethodAsTokenAsync(JsonMethod, null, ResultElement, State, (ReturnState, Token) => { Callback(ReturnState, Token.Value.GetRawText()); });
|
||||||
}
|
}
|
||||||
|
|
||||||
public delegate void JsonMethodCallbackBoolean(object State, bool Result);
|
public delegate void JsonMethodCallbackBoolean(object State, bool Result);
|
||||||
|
|
||||||
public void ExecuteJsonMethodAsBooleanAsync(string JsonMethod, Dictionary<string, object> Params, string ResultElement, object State, JsonMethodCallbackBoolean Callback)
|
public void ExecuteJsonMethodAsBooleanAsync(string JsonMethod, Dictionary<string, object> Params, string ResultElement, object State, JsonMethodCallbackBoolean Callback)
|
||||||
{
|
{
|
||||||
ExecuteJsonMethodAsTokenAsync(JsonMethod, Params, ResultElement, State, (ReturnState, Token) => { Callback(ReturnState, Token.Value<bool>()); });
|
ExecuteJsonMethodAsTokenAsync(JsonMethod, Params, ResultElement, State, (ReturnState, Token) => { Callback(ReturnState, Token.Value.GetBoolean()); });
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ExecuteJsonMethodAsBooleanAsync(string JsonMethod, string ResultElement, object State, JsonMethodCallbackBoolean Callback)
|
public void ExecuteJsonMethodAsBooleanAsync(string JsonMethod, string ResultElement, object State, JsonMethodCallbackBoolean Callback)
|
||||||
{
|
{
|
||||||
ExecuteJsonMethodAsTokenAsync(JsonMethod, null, ResultElement, State, (ReturnState, Token) => { Callback(ReturnState, Token.Value<bool>()); });
|
ExecuteJsonMethodAsTokenAsync(JsonMethod, null, ResultElement, State, (ReturnState, Token) => { Callback(ReturnState, Token.Value.GetBoolean()); });
|
||||||
}
|
}
|
||||||
|
|
||||||
public delegate void JsonMethodCallbackBytes(object State, byte[] Result);
|
public delegate void JsonMethodCallbackBytes(object State, byte[] Result);
|
||||||
|
|
||||||
public void ExecuteJsonMethodAsBytesAsync(string JsonMethod, Dictionary<string, object> Params, string ResultElement, object State, JsonMethodCallbackBytes Callback)
|
public void ExecuteJsonMethodAsBytesAsync(string JsonMethod, Dictionary<string, object> Params, string ResultElement, object State, JsonMethodCallbackBytes Callback)
|
||||||
{
|
{
|
||||||
ExecuteJsonMethodAsTokenAsync(JsonMethod, Params, ResultElement, State, (ReturnState, Token) => { Callback(ReturnState, Token.Values<byte>().ToArray()); });
|
ExecuteJsonMethodAsTokenAsync(JsonMethod, Params, ResultElement, State, (ReturnState, Token) => { Callback(ReturnState, Token.Value.EnumerateArray().Select(x => x.GetByte()).ToArray()); });
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ExecuteJsonMethodAsBytesAsync(string JsonMethod, string ResultElement, object State, JsonMethodCallbackBytes Callback)
|
public void ExecuteJsonMethodAsBytesAsync(string JsonMethod, string ResultElement, object State, JsonMethodCallbackBytes Callback)
|
||||||
{
|
{
|
||||||
ExecuteJsonMethodAsTokenAsync(JsonMethod, null, ResultElement, State, (ReturnState, Token) => { Callback(ReturnState, Token.Values<byte>().ToArray()); });
|
ExecuteJsonMethodAsTokenAsync(JsonMethod, null, ResultElement, State, (ReturnState, Token) => { Callback(ReturnState, Token.Value.EnumerateArray().Select(x => x.GetByte()).ToArray()); });
|
||||||
}
|
}
|
||||||
|
|
||||||
public delegate void JsonMethodCallbackInteger(object State, int Result);
|
public delegate void JsonMethodCallbackInteger(object State, int Result);
|
||||||
|
|
||||||
public void ExecuteJsonMethodAsIntegerAsync(string JsonMethod, Dictionary<string, object> Params, string ResultElement, object State, JsonMethodCallbackInteger Callback)
|
public void ExecuteJsonMethodAsIntegerAsync(string JsonMethod, Dictionary<string, object> Params, string ResultElement, object State, JsonMethodCallbackInteger Callback)
|
||||||
{
|
{
|
||||||
ExecuteJsonMethodAsTokenAsync(JsonMethod, Params, ResultElement, State, (ReturnState, Token) => { Callback(ReturnState, Token.Value<int>()); });
|
ExecuteJsonMethodAsTokenAsync(JsonMethod, Params, ResultElement, State, (ReturnState, Token) => { Callback(ReturnState, Token.Value.GetInt32()); });
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ExecuteJsonMethodAsIntegerAsync(string JsonMethod, string ResultElement, object State, JsonMethodCallbackInteger Callback)
|
public void ExecuteJsonMethodAsIntegerAsync(string JsonMethod, string ResultElement, object State, JsonMethodCallbackInteger Callback)
|
||||||
{
|
{
|
||||||
ExecuteJsonMethodAsTokenAsync(JsonMethod, null, ResultElement, State, (ReturnState, Token) => { Callback(ReturnState, Token.Value<int>()); });
|
ExecuteJsonMethodAsTokenAsync(JsonMethod, null, ResultElement, State, (ReturnState, Token) => { Callback(ReturnState, Token.Value.GetInt32()); });
|
||||||
}
|
}
|
||||||
|
|
||||||
public delegate void JsonMethodCallbackToken(object State, JToken Result);
|
public delegate void JsonMethodCallbackToken(object State, JsonElement? Result);
|
||||||
|
|
||||||
public void ExecuteJsonMethodAsTokenAsync(string JsonMethod, Dictionary<string, object> Params, string ResultElement, object State, JsonMethodCallbackToken Callback)
|
public void ExecuteJsonMethodAsTokenAsync(string JsonMethod, Dictionary<string, object> Params, string ResultElement, object State, JsonMethodCallbackToken Callback)
|
||||||
{
|
{
|
||||||
@@ -240,7 +246,7 @@ namespace WPinternals
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
@params.Add("MessageVersion", 0);
|
@params.Add("MessageVersion", 0);
|
||||||
string Request = JsonConvert.SerializeObject(new { jsonrpc, id, method, @params });
|
string Request = JsonSerializer.Serialize(new { jsonrpc, id, method, @params });
|
||||||
|
|
||||||
byte[] OutBuffer = System.Text.Encoding.ASCII.GetBytes(Request);
|
byte[] OutBuffer = System.Text.Encoding.ASCII.GetBytes(Request);
|
||||||
Device.OutputPipe.BeginWrite(OutBuffer, 0, OutBuffer.Length, (AsyncResultWrite) =>
|
Device.OutputPipe.BeginWrite(OutBuffer, 0, OutBuffer.Length, (AsyncResultWrite) =>
|
||||||
@@ -251,11 +257,11 @@ namespace WPinternals
|
|||||||
{
|
{
|
||||||
Length = Device.InputPipe.EndRead(AsyncResultRead);
|
Length = Device.InputPipe.EndRead(AsyncResultRead);
|
||||||
|
|
||||||
Newtonsoft.Json.Linq.JObject ResultMessage = Newtonsoft.Json.Linq.JObject.Parse(System.Text.ASCIIEncoding.ASCII.GetString(Buffer, 0, Length));
|
JsonDocument ResultMessage = JsonDocument.Parse(System.Text.ASCIIEncoding.ASCII.GetString(Buffer, 0, Length));
|
||||||
|
|
||||||
JToken ResultToken = ResultMessage.Root.SelectToken("result");
|
JsonElement? ResultToken = ResultMessage.RootElement.GetProperty("result");
|
||||||
if ((ResultToken == null) || (ResultElement == null)) Callback(AsyncResultRead.AsyncState, null);
|
if ((ResultToken == null) || (ResultElement == null)) Callback(AsyncResultRead.AsyncState, null);
|
||||||
Callback(AsyncResultRead.AsyncState, ResultToken.SelectToken(ResultElement));
|
Callback(AsyncResultRead.AsyncState, ResultToken.Value.GetProperty(ResultElement));
|
||||||
}, AsyncResultWrite.AsyncState);
|
}, AsyncResultWrite.AsyncState);
|
||||||
}, State);
|
}, State);
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-5
@@ -305,9 +305,6 @@
|
|||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<AssemblyOriginatorKeyFile>Heathcliff74.snk</AssemblyOriginatorKeyFile>
|
<AssemblyOriginatorKeyFile>Heathcliff74.snk</AssemblyOriginatorKeyFile>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
|
||||||
<Reference Include="System.IO.Compression" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Update="app.manifest">
|
<None Update="app.manifest">
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
@@ -357,10 +354,11 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
|
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
|
||||||
<PackageReference Include="Newtonsoft.Json" Version="9.0.1" />
|
|
||||||
<PackageReference Include="System.Data.DataSetExtensions" Version="4.5.0" />
|
<PackageReference Include="System.Data.DataSetExtensions" Version="4.5.0" />
|
||||||
<PackageReference Include="System.IO.Ports" Version="5.0.0" />
|
<PackageReference Include="System.IO.Compression" Version="4.3.0" />
|
||||||
|
<PackageReference Include="System.IO.Ports" Version="5.0.1" />
|
||||||
<PackageReference Include="System.Management" Version="5.0.0" />
|
<PackageReference Include="System.Management" Version="5.0.0" />
|
||||||
|
<PackageReference Include="System.Text.Json" Version="5.0.2" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<PreBuildEvent>
|
<PreBuildEvent>
|
||||||
|
|||||||
@@ -1,4 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<packages>
|
|
||||||
<package id="Newtonsoft.Json" version="9.0.1" targetFramework="net45" />
|
|
||||||
</packages>
|
|
||||||
Reference in New Issue
Block a user