微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在C#控制台应用中使用Newtonsoft.Json反序列化float数组的JSON时出错

如何解决在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 举报,一经查实,本站将立刻删除。