标签: binary-serialization

如何使用protobuf-net或其他序列化程序序列化第三方类型?

我有,List<HtmlAgilityPack.HtmlNode>但protobuf-net给我错误,它没有合同.当我没有源时,如何为它指定合同?它实际上说它无法推断出类型,但我认为这是因为我没有使用它的属性,对吗?

默认的二进制序列化程序也会抱怨,因为类型未标记为可序列化.

编辑:错误消息是:

Type is not expected, and no contract can be inferred: HtmlAgilityPack.HtmlNode
Run Code Online (Sandbox Code Playgroud)

.net c# serialization protobuf-net binary-serialization

3
推荐指数
1
解决办法
2395
查看次数

Scala位域序列化

我在Scala非常新,我对位操作功能感到困惑.我希望有人可以指出我正确的方向?

我有一个使用以下位字段定义的字节数组:

0-3 - magic number
  4 - version
5-7 - payload length in bytes
8-X - payload, of variable length, as indicated in bits 5-7
Run Code Online (Sandbox Code Playgroud)

我想将这个来回序列化为一个结构,例如:

MagicNumber: Integer
Version: Integer
Length: Integer
payload: Array[Byte]
Run Code Online (Sandbox Code Playgroud)

你如何以最佳方式处理这种情况?我见过的大多数示例都涉及更高级别的序列化,例如JSON.我想在这种情况下序列化和反序列化TCP二进制数据.

scala binary-serialization

3
推荐指数
1
解决办法
433
查看次数

Dropwizard和协议缓冲区示例

请注意:尽管这个问题特别提到了Dropwizard,但我相信任何具有Jersey / JAX-RS经验的人都应该能够回答这个问题,因为我认为Dropwizard只是遵循了Jersey / JAX-RS的惯例。


我有一个Dropwizard服务,该服务以JSON 进行改写 /编写,并且效果很好。

我现在想将其切换为读/写二进制数据(以最小化网络带宽)。我看到有Dropwizard-Protobuf库,但是我对在Dropwizard中实现二进制序列化有一些担忧。

首先,这是我当前(以JSON为中心)代码中的重要内容:

// Groovy pseudo-code

// Domain entity/POJO
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
class Fizz {
    @JsonProperty
    String name

    @JsonProperty
    boolean isBuzz    
}

// The Dropwizard app entry point
class FizzService extends Application<FizzConfiguration> {
    @Override
    void run(FizzConfiguration fizzCfg, Environment env) throws Exception {
        // ... lots of stuff

        env.jersey().register(new FizzService())
    }
}

// JAX-RS resource with a sample GET endpoint
@Path(value = "/fizz")
@Produces(MediaType.APPLICATION_JSON)
class …
Run Code Online (Sandbox Code Playgroud)

jax-rs jersey protocol-buffers binary-serialization dropwizard

3
推荐指数
1
解决办法
1714
查看次数

在C#中保存Dictionary &lt;int,object&gt;-序列化?

我在C#中有一本字典

private Dictionary<int, UserSessionInfo> userSessionLookupTable = new Dictionary<int, UserSessionInfo>();
Run Code Online (Sandbox Code Playgroud)

现在我创建了一个字典对象

this.userSessionLookupTable.Add(userSessionInfoLogin.SessionId, userSessionInfoLogin);
Run Code Online (Sandbox Code Playgroud)

现在,我想要一个通用方法将字典序列化和反序列化为字节数组。喜欢

public static void Serialize(Dictionary<int, object> dictionary, Stream stream)
{
 //Code here
}
Run Code Online (Sandbox Code Playgroud)

public static static Dictionary<int, object> Deserialize(Stream stream)
{
 //Code here
}
Run Code Online (Sandbox Code Playgroud)

谁可以帮我这个事??

c# serialization dictionary binary-serialization

3
推荐指数
1
解决办法
9014
查看次数

.NET中的序列化

我的任务是序列化和反序列化一个对象.

我想知道:

  • 我的对象是否按照我正在进行的方式序列化
  • 我如何知道我的对象被序列化或反序列化

我没有在Serialize方法中传递对象,而是在传递object.properties.这会以任何方式影响它吗?

FileStream fs = new FileStream(@"D:\Rough Work\Serialization\Serialization\bin\Debug\Log.txt",FileMode.OpenOrCreate);
Laptop obj = new Laptop();
obj.Model = 2;
obj.SerialNumber = 4;
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(fs, obj.Model);
formatter.Serialize(fs, obj.SerialNumber);

[Serializable]
class Laptop
{
    public int Model;
    public int SerialNumber;
}
Run Code Online (Sandbox Code Playgroud)

.net c# binary-serialization

2
推荐指数
1
解决办法
397
查看次数

用于序列化C++和反序列化为C#类的协议缓冲区

是否可以使用协议缓冲区在C++中对类进行序列化并将其反序列化为C#中的类似类?我已经尝试过Json序列化来克服不同平台中的序列化问题,但它在某些数据类型(例如数组列表等)上存在问题.那么有关使用google协议缓冲区的任何建议吗?

c# c++ protocol-buffers binary-serialization

2
推荐指数
1
解决办法
901
查看次数

在Ruby中使用Marshal :: dump进行对象序列化时如何写入文件

让我说我有类Line的对象:

class Line
  def initialize point1, point2
    @p1 = point1
    @p2 = point2
  end
end
Run Code Online (Sandbox Code Playgroud)

line = Line.new ...

如何对行对象进行二进制序列化?我尝试过:

data = Marshal::dump(line, "path/to/still/unexisting/file")
Run Code Online (Sandbox Code Playgroud)

但它创建了文件并没有添加任何内容.我阅读了Class:IO文档,但我无法真正理解它.

ruby serialization marshalling binary-serialization

2
推荐指数
1
解决办法
4674
查看次数

如何遍历文件以获取数据?

我正在尝试进行基本登录并注册 c# 控制台应用程序,但是,我需要遍历我的文件以查看用户在登录时输入的用户名和密码是否匹配。如果用户输入用户名和密码, 我希望我的代码通过我的文件来检查它是否是现有的用户名和密码

这是我的代码:

[Serializable]
public class Users
{
    public string UserName;
    public string Password;

    public Users(string userName, string password)
    {
        UserName = userName;
        Password = password;
    }
}

public class SaveToFile
{
    public static void SerializeSignUpDetails(string userName, string password)
    {
        Users obj = new Users(userName, password);
        IFormatter formatter = new BinaryFormatter();
        Stream stream = new FileStream("SignUp.txt", FileMode.Append, FileAccess.Write);
        formatter.Serialize(stream, obj);
        stream.Close();
    }
    public static Users DeserializeSignUpDetails()
    {
        Stream stream = new FileStream("SignUp.txt", FileMode.Open, FileAccess.Read);
        IFormatter formatter = new …
Run Code Online (Sandbox Code Playgroud)

c# foreach serialization binaryformatter binary-serialization

2
推荐指数
1
解决办法
230
查看次数

如何序列化字体

我有一个类,我设置[Serializable]该类的属性.

在这个类中我定义了一个字体类成员.但是当我尝试序列化时,它给我一个错误,如"system.drawing.font无法序列化"

c# xml fonts binary-serialization

1
推荐指数
2
解决办法
3310
查看次数

为什么C ++ msgpack-c在数字10(0x0A)之前添加数字13(0x0D),而C#MessagePack-CSharp却不呢?

我试图使用MessagePack在C ++和Windows的C#中将0到127之间的整数序列化,但是结果不一样。msgpack-c在0x09和0x0A之间插入0x0D,但MessagePack-CSharp不插入。这是为什么?

作业系统:Windows 10

IDE:Visual Studio 2019

C#

图书馆:

https://github.com/neuecc/MessagePack-CSharp

码:

using System.Collections.Generic;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        using (FileStream fileStream = new FileStream("CSharp.msgpack", FileMode.Create, FileAccess.Write))
        {
            List<int> list = new List<int>();

            for (int i = 0; i < 128; ++i)
            {
                list.Add(i);
            }

            MessagePackSerializer.Serialize(fileStream, list);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

结果:

尖锐的

C ++

图书馆:

https://github.com/msgpack/msgpack-c

码:

#include <msgpack.hpp>
#include <vector>
#include <iostream>
#include <fstream>

int main(void)
{
    std::ofstream OutputFileStream;

    std::vector<int> list;

    for (int i = 0; …
Run Code Online (Sandbox Code Playgroud)

c# c++ binary-serialization msgpack

0
推荐指数
1
解决办法
70
查看次数