Serializing C # objects with JavaScriptSerializer creates invalid bytes in UTF8 string
I am serializing a C # object with the following code:
var serializer = new JavaScriptSerializer();
var serializedResult = serializer.Serialize(rawFile);
Console.WriteLine(serializedResult);
return;
Tried serialization with Target Frameworks from 4.5 to 4.6.1.
Then I try to deserialize it to R:
> x <- read_json("C:\\dump.txt")
Error in parse_con(txt, bigint_as_char) :
lexical error: invalid bytes in UTF8 string.
": "Sample pickup:\nVolume [ĂŚl] : 1.00\nFlow [ĂŚl
(right here) ------^
I guess it is microliter. What is the best way to handle these special characters?
Thank.
+3
source to share
1 answer
The main hint from Sergei: "If you output it to the console, well ... it might be broken."
Using File.WriteAllText solves the problem:
JavaScriptSerializer serializer = new JavaScriptSerializer();
string serializedResult = serializer.Serialize(rawFile);
// byte[] bytes = Encoding.Default.GetBytes(serializedResult);
// string myString = Encoding.UTF8.GetString(bytes);
File.WriteAllText("dump2.txt", serializedResult);
0
source to share