mgholam/fastJSON

disable automatic parsing values

LukAss741 opened this issue · 1 comments

Is there any way to disable automatic parsing values? I need everything to be kept as string.
I tried AutoConvertStringToNumbers = false but it has not effect for me.
In my use case I dynamically parse jsons from different sources with different structures. Hence I parse it to Dictionary<string, object>.

this code:

foreach (var item in fastJSON.JSON.ToObject<Dictionary<string, object>>("{\"a\":\"123\",\"b\":123,\"c\":\"1.23\",\"d\":1.23,\"e\":\"0.23\",\"f\":\"0.23\",\"g\":\"123e-2\"}", new 
fastJSON.JSONParameters { AutoConvertStringToNumbers = false}))
{
	Console.WriteLine(item.Value + "\ttype: " + item.Value.GetType());
	//decimal value = decimal.Parse((string)item.Value); // not possible
}

outputs:

123     type: System.String
123     type: System.Int64
1.23    type: System.String
1,23    type: System.Decimal
0.23    type: System.String
0.23    type: System.String
123e-2  type: System.String

so for System.Int64 decimal value = decimal.Parse((string)item.Value) is not possible.

I would like output to be:

123     type: System.String
123     type: System.String
1.23    type: System.String
1.23    type: System.String
0.23    type: System.String
0.23    type: System.String
123e-2  type: System.String

so I can be sure all values are string and decide myself how to process it and whether or not to parse it.

This is not only case for numbers. I would like values of all kinds to be kept as strings by default.

fastJSON reads strings as string and numbers as long or decimal if it has a point or not.
AutoConvertStringToNumbers= false only works when trying to put the values into an object, not when reading the json into an internal dictionary before processing.