You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Json.Net序列化异常:生成奇怪字符而非括号的问题咨询

解决Json.Net序列化出现奇怪字符的问题

嘿,我一眼就瞅出问题所在了!你用了BsonWriter来序列化对象,但却把文件后缀写成了.xml,而且Bson本身是二进制格式,不是可读的文本JSON,所以直接打开文件看到的肯定是一堆奇怪字符,而不是预期的JSON括号~

先拆解下你的代码里的核心问题:

  • 你实例化的是BsonWriter,它会把对象序列化成二进制的Bson数据,根本不是文本格式的JSON
  • 你把输出文件命名为test.xml,但这个文件既不是XML也不是JSON,而是纯二进制的Bson数据

解决方案分两种情况:

情况1:你想要生成可读的JSON文本文件

把BsonWriter换成JsonTextWriter,同时建议把文件后缀改成.json,修改后的代码如下(用using语句自动释放资源,比手动Close更安全):

var info = new Info("Peter", 25); 
var filePath = Path.Combine(Application.dataPath, "test.json"); 
using (var stream = new FileStream(filePath, FileMode.Create)) // 用Create避免文件不存在报错
using (var writer = new JsonTextWriter(new StreamWriter(stream)))
{
    var serializer = new JsonSerializer(); 
    serializer.Serialize(writer, info); 
}

情况2:你确实需要生成Bson格式的二进制文件

那得把文件后缀改成.bson,而且读取的时候要用BsonReader来解析,代码调整如下:

var info = new Info("Peter", 25); 
var filePath = Path.Combine(Application.dataPath, "test.bson"); 
using (var stream = new FileStream(filePath, FileMode.Create))
using (var writer = new BsonWriter(stream))
{
    var serializer = new JsonSerializer(); 
    serializer.Serialize(writer, info); 
}

注意:Bson是二进制格式,直接用文本编辑器打开会显示乱码,这是正常现象,你需要用Bson解析工具或者对应代码读取才能看到实际内容。

另外补充下你的Info类应该是这样的(确保有公开属性和构造函数):

public class Info
{
    public string Name { get; set; }
    public int Age { get; set; }

    public Info(string name, int age)
    {
        Name = name;
        Age = age;
    }
}

内容的提问来源于stack exchange,提问作者Mycom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:44:07