如何解决在C#控制台应用中使用Newtonsoft.Json反序列化float数组的JSON时出错
我正在使用Newtonsoft.Json库,无法完成一个相当简单的任务:
序列化float数组,然后反序列化同一文件。
我的控制台应用程序如下:
var x_train = new float[3];
x_train[0] = 0.23f;
x_train[1] = 11.23f;
x_train[2] = 22.22f;
string output = JsonConvert.SerializeObject(x_train);
JsonSerializer serializer = new JsonSerializer();
using (StreamWriter sw = new StreamWriter(_pathToSerializedobjects + "\\x_train.json"))
using (JsonWriter writer = new JsonTextWriter(sw))
{
serializer.Serialize(writer,output);
}
//The file is serialized correctly,Now the problem is this block of code:
// deserialize JSON directly from a file
using (StreamReader file = File.OpenText(_pathToSerializedobjects + "\\x_train.json"))
{
JsonSerializer serializer2 = new JsonSerializer();
var dx = (float[])serializer.Deserialize(file,typeof(float[]));
Console.WriteLine(dx[0]);
Console.WriteLine(dx[1]);
Console.WriteLine(dx[2]);
}
该行: “ var dx =(float [])serializer.Deserialize(file,typeof(float []));”
抛出: Newtonsoft.Json.JsonSerializationException:'将值“ [0.23,11.23,22.22]”转换为“ System.Single []”时出错。路径”,第1行,位置20。'
我相信我在滥用Newtonsoft.Json库,但找不到示例 序列化图元。
环境: .net Core 3.1(控制台应用程序) Newtonsoft.Json 12.0.3
谢谢。
解决方法
您要序列化两次。 output
包含序列化的数组,您正在将该字符串序列化为文件。您不需要JSON序列化程序即可编写已经表示JSON值的文本。您可以为此使用File.WriteAllText
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。