C#二进制序列化错误

C#二进制序列化错误,c#,json,json.net,serializable,binaryformatter,C#,Json,Json.net,Serializable,Binaryformatter,就这样 我有以下JSON字符串: {"sTest":"Hello","oTest":{"vTest":{},iTest:0.0}} 我使用Newtonsoft.JSON将其反序列化如下: Dictionary<string, dynamic> obj = JsonConvert.DeserializeObject<Dictionary<string, dynamic>>(json) Stream stream = new FileStream(System

就这样

我有以下JSON字符串:

{"sTest":"Hello","oTest":{"vTest":{},iTest:0.0}}
我使用Newtonsoft.JSON将其反序列化如下:

Dictionary<string, dynamic> obj = JsonConvert.DeserializeObject<Dictionary<string, dynamic>>(json)
Stream stream = new FileStream(System.Web.HttpContext.Current.Server.MapPath("~/_etc/") + "obj.dat", FileMode.Create, FileAccess.ReadWrite, FileShare.Read);
BinaryFormatter serializer = new BinaryFormatter();
serializer.Serialize(stream, e.props);
stream.Close();
我的错误是:

程序集“Newtonsoft.Json,版本=6.0.0.0,区域性=中性,PublicKeyToken=xxxxxxxxxxxxx”中的类型“Newtonsoft.Json.Linq.JObject”未标记为可序列化


我不知道如何继续下去。有什么我遗漏的吗?有什么想法吗?谢谢

要使用
BinaryFormatter
,您需要创建可序列化的类来匹配JSON中的数据。例如:

// I'm hoping the real names are rather more useful - or you could use
// Json.NET attributes to perform mapping.
[Serializable]
public class Foo
{
    public string sTest { get; set; }
    public Bar oTest { get; set; }
}

[Serializable]
public class Bar
{
    public List<string> vTest { get; set; }
    public double iTest { get; set; }
}
//我希望真名更有用——或者你可以用
//用于执行映射的Json.NET属性。
[可序列化]
公开课Foo
{
公共字符串sTest{get;set;}
公共条测试{get;set;}
}
[可序列化]
公共类酒吧
{
公共列表vTest{get;set;}
公共双iTest{get;set;}
}

然后,您可以将JSON反序列化为
Foo
,然后序列化该实例。

要使用
BinaryFormatter
,您需要创建可序列化的类来匹配JSON中的数据。例如:

// I'm hoping the real names are rather more useful - or you could use
// Json.NET attributes to perform mapping.
[Serializable]
public class Foo
{
    public string sTest { get; set; }
    public Bar oTest { get; set; }
}

[Serializable]
public class Bar
{
    public List<string> vTest { get; set; }
    public double iTest { get; set; }
}
//我希望真名更有用——或者你可以用
//用于执行映射的Json.NET属性。
[可序列化]
公开课Foo
{
公共字符串sTest{get;set;}
公共条测试{get;set;}
}
[可序列化]
公共类酒吧
{
公共列表vTest{get;set;}
公共双iTest{get;set;}
}

然后,您可以将JSON反序列化为
Foo
,然后序列化该实例。

要使用
BinaryFormatter
,您需要创建可序列化的类来匹配JSON中的数据。例如:

// I'm hoping the real names are rather more useful - or you could use
// Json.NET attributes to perform mapping.
[Serializable]
public class Foo
{
    public string sTest { get; set; }
    public Bar oTest { get; set; }
}

[Serializable]
public class Bar
{
    public List<string> vTest { get; set; }
    public double iTest { get; set; }
}
//我希望真名更有用——或者你可以用
//用于执行映射的Json.NET属性。
[可序列化]
公开课Foo
{
公共字符串sTest{get;set;}
公共条测试{get;set;}
}
[可序列化]
公共类酒吧
{
公共列表vTest{get;set;}
公共双iTest{get;set;}
}

然后,您可以将JSON反序列化为
Foo
,然后序列化该实例。

要使用
BinaryFormatter
,您需要创建可序列化的类来匹配JSON中的数据。例如:

// I'm hoping the real names are rather more useful - or you could use
// Json.NET attributes to perform mapping.
[Serializable]
public class Foo
{
    public string sTest { get; set; }
    public Bar oTest { get; set; }
}

[Serializable]
public class Bar
{
    public List<string> vTest { get; set; }
    public double iTest { get; set; }
}
//我希望真名更有用——或者你可以用
//用于执行映射的Json.NET属性。
[可序列化]
公开课Foo
{
公共字符串sTest{get;set;}
公共条测试{get;set;}
}
[可序列化]
公共类酒吧
{
公共列表vTest{get;set;}
公共双iTest{get;set;}
}

然后您可以将JSON反序列化为
Foo
,然后序列化该实例。

这是否意味着我无法将动态对象序列化为二进制文件?有没有其他工作可以让我这样做?无论如何,非常感谢,伙计@GalihDonoPrabowo:实际上没有“动态对象”这样的东西——您正在尝试序列化
作业对象。
BinaryFormatter
不知道您的变量使用了
dynamic
。就我个人而言,我建议尝试摆脱这一要求,.NET二进制格式化程序在各种方面都非常脆弱和烦人。。。如果您真正的需求是紧凑的表示,那么还有很多其他选择。(而且“二进制文件”并不一定意味着“使用.NET二进制序列化…”可能用标记类会比实现.NET要求更简单!谢谢大家!这是否意味着我不能将动态对象序列化为二进制文件?有没有其他工作可以让我这样做?无论如何,非常感谢,伙计@GalihDonoPrabowo:实际上没有“动态对象”这样的东西——您正在尝试序列化
作业对象。
BinaryFormatter
不知道您的变量使用了
dynamic
。就我个人而言,我建议尝试摆脱这一要求,.NET二进制格式化程序在各种方面都非常脆弱和烦人。。。如果您真正的需求是紧凑的表示,那么还有很多其他选择。(而且“二进制文件”并不一定意味着“使用.NET二进制序列化…”可能用标记类会比实现.NET要求更简单!谢谢大家!这是否意味着我不能将动态对象序列化为二进制文件?有没有其他工作可以让我这样做?无论如何,非常感谢,伙计@GalihDonoPrabowo:实际上没有“动态对象”这样的东西——您正在尝试序列化
作业对象。
BinaryFormatter
不知道您的变量使用了
dynamic
。就我个人而言,我建议尝试摆脱这一要求,.NET二进制格式化程序在各种方面都非常脆弱和烦人。。。如果您真正的需求是紧凑的表示,那么还有很多其他选择。(而且“二进制文件”并不一定意味着“使用.NET二进制序列化…”可能用标记类会比实现.NET要求更简单!谢谢大家!这是否意味着我不能将动态对象序列化为二进制文件?有没有其他工作可以让我这样做?无论如何,非常感谢,伙计@GalihDonoPrabowo:实际上没有“动态对象”这样的东西——您正在尝试序列化
作业对象。
BinaryFormatter
不知道您的变量使用了
dynamic
。就我个人而言,我建议尝试摆脱这一要求,.NET二进制格式化程序在各种方面都非常脆弱和烦人。。。如果您真正的需求是紧凑的表示,那么还有很多其他选择。(而且“二进制文件”并不一定意味着“使用.NET二进制序列化…”可能用标记类会比实现.NET要求更简单!谢谢大家![^_^]