我在线搜索了一下,无法找到问题的答案。
我有一个由MemoryStream对象构成的C#序列化。我想保存序列化(这是我已经可以做的事情),然后用JavaScript反序列化。
有人知道这是否可行?我还没有看到任何可以做到这一点的API。
感谢您的回答。更具体地说,我已经有一个在C#中运行的应用程序,它使用MemoryStream的反序列化。这是一个非常大的应用程序,我想做尽可能少的修改。我想通过使用相同的序列化链接另一个应用程序(在HTML / JavaScript中运行)与第一个应用程序。如果我使用JSON序列化,我将不得不经常修改C#中的代码,这是我想要避免的。
总结一下,我希望能够阅读"在我的javascript项目中由C#生成的序列化。
为了明确我不想使用其他序列化到JSON / XML / ...,我想使用我已经使用的那个,然后用JavaScript反序列化它。
提前致谢。
答案 0 :(得分:4)
在C#中使用序列化时,通常使用二进制或XML序列化。开箱即用的JavaScript都无法读取。 (尝试实现这一点真的不值得。)
但是从对象序列化切换到JSON和(反之亦然)并不是很难:
Person p = new Person();
p.name = "John";
p.age = 42;
MemoryStream stream1 = new MemoryStream();
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(Person));
ser.WriteObject(stream1, p);
(来自MSDN的示例: https://msdn.microsoft.com/en-us/library/bb412179%28v=vs.110%29.aspx)
因此。简而言之:重新考虑您的要求。没有Json
,你将找不到一个简单的解决方案答案 1 :(得分:0)
您可以尝试XML序列化或JSON。 C#有一个易于使用的XML提供程序类,但是您应该将数据解析为对象数组,因此Java和C#可以通过以下方式对它们进行反序列化:
public class person
{
public string name;
public byte age;
public person(object[] args)
{
name = args[0];
age = args[1];
}
}
On Recieve您可以在objec []中反序列化,然后使用
创建一个类实例Person p = new Person(rec_args);
我不知道Javascript是如何处理类的,但是在Serilaziation级别,你必须在基本级别(只有序列化变量到对象数组和反向)上工作才能有一个干净的无错执行!