标签: marshalling

Serialization和Marshaling有什么区别?

我知道,就几种分布式技术(如RPC)而言,使用术语"编组"但不理解它与序列化的区别.它们不是都将对象转换为一系列位吗?

有关:

什么是序列化?

什么是对象编组?

serialization rpc terminology marshalling

472
推荐指数
8
解决办法
10万
查看次数


Go中使用JSON Marshal的小写JSON密钥名称

我希望使用该"encoding/json"包来封送在我的应用程序的一个导入包中声明的结构.

例如.:

type T struct {
    Foo int
}
Run Code Online (Sandbox Code Playgroud)

因为它是导入的,所以结构中的所有可用(导出)字段都以大写字母开头.但我希望有小写的密钥名称:

out, err := json.Marshal(&T{Foo: 42})
Run Code Online (Sandbox Code Playgroud)

会导致

{ "富":42}

但我希望得到

{ "foo" 的:42}

是否有可能以一种简单的方式解决问题?

json marshalling go

157
推荐指数
3
解决办法
4万
查看次数

什么是序列化?

我开始使用OOP编程,想知道OOP用语中序列化的含义是什么?

java oop serialization marshalling

131
推荐指数
6
解决办法
7万
查看次数

json.Marshal(struct)返回"{}"

type TestObject struct {
    kind string `json:"kind"`
    id   string `json:"id, omitempty"`
    name  string `json:"name"`
    email string `json:"email"`
}

func TestCreateSingleItemResponse(t *testing.T) {
    testObject := new(TestObject)
    testObject.kind = "TestObject"
    testObject.id = "f73h5jf8"
    testObject.name = "Yuri Gagarin"
    testObject.email = "Yuri.Gagarin@Vostok.com"

    fmt.Println(testObject)

    b, err := json.Marshal(testObject)

    if err != nil {
        fmt.Println(err)
    }

    fmt.Println(string(b[:]))
}
Run Code Online (Sandbox Code Playgroud)

这是输出:

[ `go test -test.run="^TestCreateSingleItemResponse$"` | done: 2.195666095s ]
    {TestObject f73h5jf8 Yuri Gagarin Yuri.Gagarin@Vostok.com}
    {}
    PASS
Run Code Online (Sandbox Code Playgroud)

为什么JSON基本上是空的?

json marshalling go

112
推荐指数
3
解决办法
3万
查看次数

JAXB创建上下文和marshallers成本

问题有点理论化,创建JAXB上下文,marshaller和unmarshaller的成本是多少?

我发现我的代码可以从保持相同的JAXB上下文和可能与所有编组操作相同的编组器中受益,而不是在每个编组时创建上下文和编组器.

那么创建JAXB上下文和marshaller/unmarshaller的成本是多少?是否可以为每个编组操作创建context + marshaller,或者最好避免它?

java jaxb marshalling

111
推荐指数
3
解决办法
4万
查看次数

编组 - 它是什么以及我们为什么需要它?

什么是编组,我们为什么需要它?

我发现很难相信我不能通过int电线从C#发送到C并且必须对其进行编组.为什么C#只能通过一个起始和终止信号发送32位,告诉C代码它已经收到了int

如果有任何好的教程或网站关于我们为什么需要编组以及如何使用它,那将是很好的.

.net c# unmanaged managed marshalling

87
推荐指数
5
解决办法
5万
查看次数

如何指定JAXB封送xsd:dateTime时使用的日期格式?

当JAXB将日期对象(XMLGregorianCalendar)编组到xsd:dateTime元素中时,如何指定生成的XML的格式?

例如:默认数据格式是使用<StartDate>2012-08-21T13:21:58.000Z</StartDate> 我需要的毫秒来省略毫秒. <StartDate>2012-08-21T13:21:58Z</StartDate>

如何指定我希望它使用的输出格式/日期格式?我正在使用javax.xml.datatype.DatatypeFactory创建XMLGregorianCalendar对象.

XMLGregorianCalendar xmlCal = datatypeFactory.newXMLGregorianCalendar(cal);
Run Code Online (Sandbox Code Playgroud)

format datetime jaxb marshalling milliseconds

83
推荐指数
2
解决办法
8万
查看次数

如何在C++中序列化对象?

我有一个小的对象层次结构,我需要通过套接字连接进行序列化和传输.我需要序列化对象,然后根据它的类型反序列化它.有没有一种简单的方法在C++中实现这一点(就像在Java中一样)?

是否有任何C++序列化在线代码示例或教程?

编辑:为了清楚,我正在寻找将对象转换为字节数组,然后返回到对象的方法.我可以处理插座传输.

c++ serialization c++-faq marshalling

79
推荐指数
3
解决办法
7万
查看次数

从字节数组中读取C#中的C/C++数据结构

从byte []数组填充C#结构的最佳方法是什么,其中数据来自C/C++结构?C结构看起来像这样(我的C很生锈):

typedef OldStuff {
    CHAR Name[8];
    UInt32 User;
    CHAR Location[8];
    UInt32 TimeStamp;
    UInt32 Sequence;
    CHAR Tracking[16];
    CHAR Filler[12];
}
Run Code Online (Sandbox Code Playgroud)

并填写这样的东西:

[StructLayout(LayoutKind.Explicit, Size = 56, Pack = 1)]
public struct NewStuff
{
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
    [FieldOffset(0)]
    public string Name;

    [MarshalAs(UnmanagedType.U4)]
    [FieldOffset(8)]
    public uint User;

    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
    [FieldOffset(12)]
    public string Location;

    [MarshalAs(UnmanagedType.U4)]
    [FieldOffset(20)]
    public uint TimeStamp;

    [MarshalAs(UnmanagedType.U4)]
    [FieldOffset(24)]
    public uint Sequence;

    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
    [FieldOffset(28)]
    public string Tracking;
}
Run Code Online (Sandbox Code Playgroud)

什么是复制OldStuff到的最佳方式NewStuff,如果OldStuff作为byte []数组传递? …

.net c# marshalling data-structures

78
推荐指数
3
解决办法
5万
查看次数