You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I have a issue when try to update your lib from 2.3.1 to the latest version. My code is run in .net core 3.1/5.0
Here my test, if I use the 2.3.1 the function is OK, but upgrade it to newer versions, it always fail.
Could you check it for me?
Example :
static class Program
{
private static bool _isTestJson = true;
///
/// The main entry point for the application.
///
static void Main()
{
var directory = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
string pathToExe = directory + "\fastJSON.dll";
//var fileInfo = new FileInfo(pathToExe);
var versionInfo = FileVersionInfo.GetVersionInfo(pathToExe);
string version = versionInfo.FileVersion;
Console.WriteLine("Start test FastJson: " + version);
TestEnumJson.RunTestCase();
Console.ReadLine();
}
}
namespace QuantEdge.Worker.TestFastJsonNetCore.Runner
{
public class TestEnumJson
{
public static void RunTestCase()
{
Console.WriteLine("Start run test case");
var obj = new ExtendMessage()
{
Layer1 = LayerEnum.L1,
Layer2 = LayerEnum.L2,
Layer3 = LayerEnum.L3,
Layer4 = LayerEnum.L4,
};
var lstObj = new List();
lstObj.Add(obj);
lstObj.Add(obj);
Console.WriteLine("----------------TEST CASE 1--------------------------");
var stringJson = JSON.ToJSON(obj);
Console.WriteLine("stringJson: " + stringJson);
ParseTo_BaseMessage(stringJson);
ParseTo_AbstractMessage(stringJson);
Console.WriteLine("----------------TEST CASE 2--------------------------");
var stringJsonList = JSON.ToJSON(lstObj);
Console.WriteLine("stringJsonList: " + stringJsonList);
ParseTo_ListBaseMessage(stringJsonList);
ParseTo_ListAbstractMessage(stringJsonList);
ParseTo_DefaultList(stringJsonList);
Console.ReadLine();
}
private static void ParseTo_BaseMessage(string stringJson)
{
Console.WriteLine("-------TEST : ");
Console.WriteLine("Deserialize msg to : BaseMessage");
var objParse = JSON.ToObject<BaseMessage>(stringJson);
CheckMsg(objParse);
}
private static void ParseTo_AbstractMessage(string stringJson)
{
Console.WriteLine("-------TEST : ");
Console.WriteLine("Deserialize msg to : AbstractMessage");
var objParse = JSON.ToObject<AbstractMessage>(stringJson);
CheckMsg(objParse);
}
private static void ParseTo_ListBaseMessage(string stringJson)
{
Console.WriteLine("-------TEST : ");
Console.WriteLine("Deserialize msg to : List<BaseMessage>");
var objParse = JSON.ToObject<List<BaseMessage>>(stringJson);
if (objParse != null)
{
for (int i = 0; i < objParse.Count; i++)
{
var objCheck = objParse[i];
CheckMsg(objCheck);
}
}
}
private static void ParseTo_ListAbstractMessage(string stringJson)
{
Console.WriteLine("-------TEST : ");
Console.WriteLine("Deserialize msg to : List<AbstractMessage>");
var objParse = JSON.ToObject<List<AbstractMessage>>(stringJson);
if (objParse != null)
{
for (int i = 0; i < objParse.Count; i++)
{
var objCheck = objParse[i];
CheckMsg(objCheck);
}
}
}
private static void ParseTo_DefaultList(string stringJson)
{
Console.WriteLine("-------TEST : ");
Console.WriteLine("Deserialize msg to : DefaultList");
var objParse = JSON.ToObject(stringJson);
if (objParse is List<ExtendMessage>)
{
Console.WriteLine("objParse is List<ExtendMessage>");
var lstMsg = (List<ExtendMessage>)objParse;
for (int i = 0; i < lstMsg.Count; i++)
{
var objCheck = lstMsg[i];
CheckMsg(objCheck);
}
}
else if (objParse is List<object>)
{
Console.WriteLine("objParse is List<object>");
var lstMsg = (List<object>)objParse;
for (int i = 0; i < lstMsg.Count; i++)
{
var objCheck = (ExtendMessage)lstMsg[i];
CheckMsg(objCheck);
}
}
else
{
Console.WriteLine("objParse not is List<ExtendMessage>");
}
}
private static void CheckMsg(object testParse)
{
if (testParse is ExtendMessage)
{
var obj = testParse as ExtendMessage;
//check it have value
if (obj.Layer1 == LayerEnum.L1 &&
obj.Layer2 == LayerEnum.L2 &&
obj.Layer3 == LayerEnum.L3 &&
obj.Layer4 == LayerEnum.L4)
{
Console.WriteLine("------------------------------OK");
}
else
{
// found issue in >>>>> HERE <<<<<
Console.WriteLine("------------------------------FAIL:");
}
LogTo.Info("obj.Layer0 = " + obj.Layer0);
LogTo.Info("obj.Layer1 = " + obj.Layer1);
LogTo.Info("obj.Layer2 = " + obj.Layer2);
LogTo.Info("obj.Layer3 = " + obj.Layer3);
LogTo.Info("obj.Layer4 = " + obj.Layer4);
}
else
{
Console.WriteLine("Message is not 'ExtendMessage'");
Console.WriteLine("------------------------------FAIL:");
}
}
}
public enum LayerEnum
{
NONE = 0,
L0 = 1,
L1 = 10,
L2 = 20,
L3 = 30,
L4 = 40
}
public class ExtendMessage : Message
{
public LayerEnum Layer4 { get; set; }
}
public class Message : BaseMessage
{
public LayerEnum Layer3 { get; set; }
}
public class BaseMessage : AbstractMessage
{
public LayerEnum Layer2 { get; set; }
}
public abstract class AbstractMessage
{
public LayerEnum Layer1 { get; set; }
public LayerEnum Layer0 { get; internal set; }
}
public interface IMessage
{
LayerEnum Layer0 { get; set; }
}
Dear support,
With example dungvu-qe in issuess : #132
I have a issue when try to update your lib from 2.3.1 to the latest version. My code is run in .net core 3.1/5.0
Here my test, if I use the 2.3.1 the function is OK, but upgrade it to newer versions, it always fail.
Could you check it for me?
Example :
static class Program
{
private static bool _isTestJson = true;
///
/// The main entry point for the application.
///
static void Main()
{
var directory = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
string pathToExe = directory + "\fastJSON.dll";
//var fileInfo = new FileInfo(pathToExe);
var versionInfo = FileVersionInfo.GetVersionInfo(pathToExe);
string version = versionInfo.FileVersion;
Console.WriteLine("Start test FastJson: " + version);
TestEnumJson.RunTestCase();
Console.ReadLine();
}
}
namespace QuantEdge.Worker.TestFastJsonNetCore.Runner
{
public class TestEnumJson
{
public static void RunTestCase()
{
Console.WriteLine("Start run test case");
var obj = new ExtendMessage()
{
Layer1 = LayerEnum.L1,
Layer2 = LayerEnum.L2,
Layer3 = LayerEnum.L3,
Layer4 = LayerEnum.L4,
};
var lstObj = new List();
lstObj.Add(obj);
lstObj.Add(obj);
}
Result use fastjson ver 2.3.1 :
Start test FastJson: 2.2.0.0
Start run test case
----------------TEST CASE 1--------------------------
stringJson: {"$types":{"QuantEdge.Worker.TestFastJsonNetCore.Runner.ExtendMessage, TestFastJsonNetCore, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null":"1"},"$type":"1","Layer4":"L4","Layer3":"L3","Layer2":"L2","Layer1":"L1","Layer0":"NONE"}
-------TEST :
Deserialize msg to : BaseMessage
------------------------------OK
2021/10/07 14:44:40.172 Method: 'Void CheckMsg(Object)'. Line: ~137. obj.Layer0 = NONE
2021/10/07 14:44:40.199 Method: 'Void CheckMsg(Object)'. Line: ~138. obj.Layer1 = L1
2021/10/07 14:44:40.199 Method: 'Void CheckMsg(Object)'. Line: ~139. obj.Layer2 = L2
2021/10/07 14:44:40.199 Method: 'Void CheckMsg(Object)'. Line: ~140. obj.Layer3 = L3
2021/10/07 14:44:40.199 Method: 'Void CheckMsg(Object)'. Line: ~141. obj.Layer4 = L4
-------TEST :
Deserialize msg to : AbstractMessage
------------------------------OK
2021/10/07 14:44:40.199 Method: 'Void CheckMsg(Object)'. Line: ~137. obj.Layer0 = NONE
2021/10/07 14:44:40.199 Method: 'Void CheckMsg(Object)'. Line: ~138. obj.Layer1 = L1
2021/10/07 14:44:40.199 Method: 'Void CheckMsg(Object)'. Line: ~139. obj.Layer2 = L2
2021/10/07 14:44:40.199 Method: 'Void CheckMsg(Object)'. Line: ~140. obj.Layer3 = L3
2021/10/07 14:44:40.199 Method: 'Void CheckMsg(Object)'. Line: ~141. obj.Layer4 = L4
----------------TEST CASE 2--------------------------
stringJsonList: [{"$type":"QuantEdge.Worker.TestFastJsonNetCore.Runner.ExtendMessage, TestFastJsonNetCore, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null","Layer4":"L4","Layer3":"L3","Layer2":"L2","Layer1":"L1","Layer0":"NONE"},{"$type":"QuantEdge.Worker.TestFastJsonNetCore.Runner.ExtendMessage, TestFastJsonNetCore, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null","Layer4":"L4","Layer3":"L3","Layer2":"L2","Layer1":"L1","Layer0":"NONE"}]
-------TEST :
Deserialize msg to : List
------------------------------OK
2021/10/07 14:44:40.207 Method: 'Void CheckMsg(Object)'. Line: ~137. obj.Layer0 = NONE
2021/10/07 14:44:40.207 Method: 'Void CheckMsg(Object)'. Line: ~138. obj.Layer1 = L1
2021/10/07 14:44:40.207 Method: 'Void CheckMsg(Object)'. Line: ~139. obj.Layer2 = L2
2021/10/07 14:44:40.207 Method: 'Void CheckMsg(Object)'. Line: ~140. obj.Layer3 = L3
2021/10/07 14:44:40.207 Method: 'Void CheckMsg(Object)'. Line: ~141. obj.Layer4 = L4
------------------------------OK
2021/10/07 14:44:40.207 Method: 'Void CheckMsg(Object)'. Line: ~137. obj.Layer0 = NONE
2021/10/07 14:44:40.207 Method: 'Void CheckMsg(Object)'. Line: ~138. obj.Layer1 = L1
2021/10/07 14:44:40.207 Method: 'Void CheckMsg(Object)'. Line: ~139. obj.Layer2 = L2
2021/10/07 14:44:40.207 Method: 'Void CheckMsg(Object)'. Line: ~140. obj.Layer3 = L3
2021/10/07 14:44:40.207 Method: 'Void CheckMsg(Object)'. Line: ~141. obj.Layer4 = L4
-------TEST :
Deserialize msg to : List
------------------------------OK
2021/10/07 14:44:40.207 Method: 'Void CheckMsg(Object)'. Line: ~137. obj.Layer0 = NONE
2021/10/07 14:44:40.207 Method: 'Void CheckMsg(Object)'. Line: ~138. obj.Layer1 = L1
2021/10/07 14:44:40.207 Method: 'Void CheckMsg(Object)'. Line: ~139. obj.Layer2 = L2
2021/10/07 14:44:40.207 Method: 'Void CheckMsg(Object)'. Line: ~140. obj.Layer3 = L3
2021/10/07 14:44:40.207 Method: 'Void CheckMsg(Object)'. Line: ~141. obj.Layer4 = L4
------------------------------OK
2021/10/07 14:44:40.222 Method: 'Void CheckMsg(Object)'. Line: ~137. obj.Layer0 = NONE
2021/10/07 14:44:40.222 Method: 'Void CheckMsg(Object)'. Line: ~138. obj.Layer1 = L1
2021/10/07 14:44:40.222 Method: 'Void CheckMsg(Object)'. Line: ~139. obj.Layer2 = L2
2021/10/07 14:44:40.222 Method: 'Void CheckMsg(Object)'. Line: ~140. obj.Layer3 = L3
2021/10/07 14:44:40.222 Method: 'Void CheckMsg(Object)'. Line: ~141. obj.Layer4 = L4
-------TEST :
Deserialize msg to : DefaultList
objParse is List
------------------------------OK
2021/10/07 14:44:40.222 Method: 'Void CheckMsg(Object)'. Line: ~137. obj.Layer0 = NONE
2021/10/07 14:44:40.222 Method: 'Void CheckMsg(Object)'. Line: ~138. obj.Layer1 = L1
2021/10/07 14:44:40.222 Method: 'Void CheckMsg(Object)'. Line: ~139. obj.Layer2 = L2
2021/10/07 14:44:40.222 Method: 'Void CheckMsg(Object)'. Line: ~140. obj.Layer3 = L3
2021/10/07 14:44:40.222 Method: 'Void CheckMsg(Object)'. Line: ~141. obj.Layer4 = L4
------------------------------OK
2021/10/07 14:44:40.222 Method: 'Void CheckMsg(Object)'. Line: ~137. obj.Layer0 = NONE
2021/10/07 14:44:40.222 Method: 'Void CheckMsg(Object)'. Line: ~138. obj.Layer1 = L1
2021/10/07 14:44:40.222 Method: 'Void CheckMsg(Object)'. Line: ~139. obj.Layer2 = L2
2021/10/07 14:44:40.222 Method: 'Void CheckMsg(Object)'. Line: ~140. obj.Layer3 = L3
2021/10/07 14:44:40.222 Method: 'Void CheckMsg(Object)'. Line: ~141. obj.Layer4 = L4
--> in ver 2.2.0.0 allways OK
Result use fastjson ver 2.4.0.5 :
Start test FastJson: 2.4.0.5
Start run test case
----------------TEST CASE 1--------------------------
stringJson: {"$types":{"QuantEdge.Worker.TestFastJsonNetCore.Runner.ExtendMessage, TestFastJsonNetCore, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null":"1"},"$type":"1","Layer4":"L4","Layer3":"L3","Layer2":"L2","Layer1":"L1","Layer0":"NONE"}
-------TEST :
Deserialize msg to : BaseMessage
------------------------------OK
2021/10/07 14:47:05.788 Method: 'Void CheckMsg(Object)'. Line: ~137. obj.Layer0 = NONE
2021/10/07 14:47:05.814 Method: 'Void CheckMsg(Object)'. Line: ~138. obj.Layer1 = L1
2021/10/07 14:47:05.814 Method: 'Void CheckMsg(Object)'. Line: ~139. obj.Layer2 = L2
2021/10/07 14:47:05.814 Method: 'Void CheckMsg(Object)'. Line: ~140. obj.Layer3 = L3
2021/10/07 14:47:05.814 Method: 'Void CheckMsg(Object)'. Line: ~141. obj.Layer4 = L4
-------TEST :
Deserialize msg to : AbstractMessage
------------------------------OK
2021/10/07 14:47:05.816 Method: 'Void CheckMsg(Object)'. Line: ~137. obj.Layer0 = NONE
2021/10/07 14:47:05.816 Method: 'Void CheckMsg(Object)'. Line: ~138. obj.Layer1 = L1
2021/10/07 14:47:05.816 Method: 'Void CheckMsg(Object)'. Line: ~139. obj.Layer2 = L2
2021/10/07 14:47:05.816 Method: 'Void CheckMsg(Object)'. Line: ~140. obj.Layer3 = L3
2021/10/07 14:47:05.816 Method: 'Void CheckMsg(Object)'. Line: ~141. obj.Layer4 = L4
----------------TEST CASE 2--------------------------
stringJsonList: [{"$type":"QuantEdge.Worker.TestFastJsonNetCore.Runner.ExtendMessage, TestFastJsonNetCore, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null","Layer4":"L4","Layer3":"L3","Layer2":"L2","Layer1":"L1","Layer0":"NONE"},{"$type":"QuantEdge.Worker.TestFastJsonNetCore.Runner.ExtendMessage, TestFastJsonNetCore, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null","Layer4":"L4","Layer3":"L3","Layer2":"L2","Layer1":"L1","Layer0":"NONE"}]
-------TEST :
Deserialize msg to : List
------------------------------FAIL:
2021/10/07 14:47:05.816 Method: 'Void CheckMsg(Object)'. Line: ~137. obj.Layer0 = NONE
2021/10/07 14:47:05.816 Method: 'Void CheckMsg(Object)'. Line: ~138. obj.Layer1 = L1
2021/10/07 14:47:05.816 Method: 'Void CheckMsg(Object)'. Line: ~139. obj.Layer2 = L2
2021/10/07 14:47:05.816 Method: 'Void CheckMsg(Object)'. Line: ~140. obj.Layer3 = NONE
2021/10/07 14:47:05.816 Method: 'Void CheckMsg(Object)'. Line: ~141. obj.Layer4 = NONE
------------------------------FAIL:
2021/10/07 14:47:05.816 Method: 'Void CheckMsg(Object)'. Line: ~137. obj.Layer0 = NONE
2021/10/07 14:47:05.816 Method: 'Void CheckMsg(Object)'. Line: ~138. obj.Layer1 = L1
2021/10/07 14:47:05.816 Method: 'Void CheckMsg(Object)'. Line: ~139. obj.Layer2 = L2
2021/10/07 14:47:05.832 Method: 'Void CheckMsg(Object)'. Line: ~140. obj.Layer3 = NONE
2021/10/07 14:47:05.832 Method: 'Void CheckMsg(Object)'. Line: ~141. obj.Layer4 = NONE
-------TEST :
Deserialize msg to : List
------------------------------FAIL:
2021/10/07 14:47:05.832 Method: 'Void CheckMsg(Object)'. Line: ~137. obj.Layer0 = NONE
2021/10/07 14:47:05.832 Method: 'Void CheckMsg(Object)'. Line: ~138. obj.Layer1 = L1
2021/10/07 14:47:05.832 Method: 'Void CheckMsg(Object)'. Line: ~139. obj.Layer2 = NONE
2021/10/07 14:47:05.832 Method: 'Void CheckMsg(Object)'. Line: ~140. obj.Layer3 = NONE
2021/10/07 14:47:05.832 Method: 'Void CheckMsg(Object)'. Line: ~141. obj.Layer4 = NONE
------------------------------FAIL:
2021/10/07 14:47:05.832 Method: 'Void CheckMsg(Object)'. Line: ~137. obj.Layer0 = NONE
2021/10/07 14:47:05.832 Method: 'Void CheckMsg(Object)'. Line: ~138. obj.Layer1 = L1
2021/10/07 14:47:05.832 Method: 'Void CheckMsg(Object)'. Line: ~139. obj.Layer2 = NONE
2021/10/07 14:47:05.832 Method: 'Void CheckMsg(Object)'. Line: ~140. obj.Layer3 = NONE
2021/10/07 14:47:05.832 Method: 'Void CheckMsg(Object)'. Line: ~141. obj.Layer4 = NONE
-------TEST :
Deserialize msg to : DefaultList
objParse is List
------------------------------OK
2021/10/07 14:47:05.832 Method: 'Void CheckMsg(Object)'. Line: ~137. obj.Layer0 = NONE
2021/10/07 14:47:05.832 Method: 'Void CheckMsg(Object)'. Line: ~138. obj.Layer1 = L1
2021/10/07 14:47:05.832 Method: 'Void CheckMsg(Object)'. Line: ~139. obj.Layer2 = L2
2021/10/07 14:47:05.847 Method: 'Void CheckMsg(Object)'. Line: ~140. obj.Layer3 = L3
2021/10/07 14:47:05.847 Method: 'Void CheckMsg(Object)'. Line: ~141. obj.Layer4 = L4
------------------------------OK
2021/10/07 14:47:05.847 Method: 'Void CheckMsg(Object)'. Line: ~137. obj.Layer0 = NONE
2021/10/07 14:47:05.847 Method: 'Void CheckMsg(Object)'. Line: ~138. obj.Layer1 = L1
2021/10/07 14:47:05.847 Method: 'Void CheckMsg(Object)'. Line: ~139. obj.Layer2 = L2
2021/10/07 14:47:05.847 Method: 'Void CheckMsg(Object)'. Line: ~140. obj.Layer3 = L3
2021/10/07 14:47:05.847 Method: 'Void CheckMsg(Object)'. Line: ~141. obj.Layer4 = L4
--> Please help me fix issues when case use ver 2.4.0.5
Deserialize msg to : List not get all values
Deserialize msg to : List not get all values
Example attack : TestFastJsonNetCore.zip
Thank for support!
The text was updated successfully, but these errors were encountered: