标签: marshalling

什么是编组?什么东西被"编组"会发生什么?

我知道至少在这里已经提出了这个问题.

但是没有一个令人满意的答案,至少对我没有.关于与非托管代码的互操作,有很多关于编组的讨论,但是从一个线程到另一个线程的编组呢,就像我们在.NET中必须做的那样.

这让我问,什么是编组,真的吗?当您给出编组的定义时,您将如何定义它以便解释互操作性的情况,以及您在线程之间"编组"的情况?

.net multithreading definition language-interoperability marshalling

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

将Python ElementTree转换为字符串

每当我打电话时ElementTree.tostring(e),都会收到以下错误消息:

AttributeError: 'Element' object has no attribute 'getroot'
Run Code Online (Sandbox Code Playgroud)

有没有其他方法将ElementTree对象转换为XML字符串?

追溯:

Traceback (most recent call last):
  File "Development/Python/REObjectSort/REObjectResolver.py", line 145, in <module>
    cm = integrateDataWithCsv(cm, csvm)
  File "Development/Python/REObjectSort/REObjectResolver.py", line 137, in integrateDataWithCsv
    xmlstr = ElementTree.tostring(et.getroot(),encoding='utf8',method='xml')
AttributeError: 'Element' object has no attribute 'getroot'
Run Code Online (Sandbox Code Playgroud)

python xml marshalling elementtree

67
推荐指数
2
解决办法
11万
查看次数

如何编组多维数组

我们有一些涉及矩阵的互操作代码.我试图调用本机DLL,并且在大多数情况下它的工作非常可靠.

我依赖.net默认编组,避免使用非托管指针,而不是大部分使用.net数组,也许是byref在这里和那里..net文章说,多维数组被隐式编组为列主要的一维数组,这很好.

唯一似乎不起作用的是尝试编组多维数组,因为F#编译器抱怨声明中float[,]不允许这样做extern.这种限制有什么办法吗?

我知道F#PowerPack的类型PinnedArrayPinnedArray2类型,但我一直在寻找依赖于托管指针的解决方案 - 更重要的是 - 我希望避免将F#PowerPack作为依赖项包含在PinnedArray类中.

.net f# marshalling multidimensional-array

66
推荐指数
1
解决办法
1657
查看次数

Json < - >与GWT一起使用的Java序列化

我正在寻找一个可以与GWT一起使用的简单的Java Json(de)序列化程序.我已经google了一下,发现了一些解决方案要么需要注释每个成员,要么定义无用的接口.相当无聊.为什么我们没有像这样简单的东西

class MyBean {
    ...
}

new GoodSerializer().makeString(new MyBean());
new GoodSerializer().makeObject("{ ... }", MyBean.class)
Run Code Online (Sandbox Code Playgroud)

gwt serialization json marshalling javabeans

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

问题解组parcelables

我有一些实现Parcelable的类,其中一些类作为属性互相包含.我正在将类编组为一个,以便在活动之间传递它们.将它们编组到包裹中工作正常,但是当我尝试解组它们时,我收到以下错误:

...
AndroidRuntime  E  Caused by: android.os.BadParcelableException: ClassNotFoundException when unmarshalling: schemas.Arrivals.LocationType
AndroidRuntime  E   at android.os.Parcel.readParcelable(Parcel.java:1822)
AndroidRuntime  E   at schemas.Arrivals.LayoverType.<init>(LayoverType.java:121)
AndroidRuntime  E   at schemas.Arrivals.LayoverType.<init>(LayoverType.java:120)
AndroidRuntime  E   at schemas.Arrivals.LayoverType$1.createFromParcel(LayoverType.java:112)
AndroidRuntime  E   at schemas.Arrivals.LayoverType$1.createFromParcel(LayoverType.java:1)
AndroidRuntime  E   at android.os.Parcel.readTypedList(Parcel.java:1509)
AndroidRuntime  E   at schemas.Arrivals.BlockPositionType.<init>(BlockPositionType.java:244)
AndroidRuntime  E   at schemas.Arrivals.BlockPositionType.<init>(BlockPositionType.java:242)
AndroidRuntime  E   at schemas.Arrivals.BlockPositionType$1.createFromParcel(BlockPositionType.java:234)
AndroidRuntime  E   at schemas.Arrivals.BlockPositionType$1.createFromParcel(BlockPositionType.java:1)
...
Run Code Online (Sandbox Code Playgroud)

LayoverType班(其中它的失败):

public class LayoverType implements Parcelable {    
    protected LocationType location;
    protected long start;
    protected long end;

    public LayoverType() {}

    public LocationType getLocation() …
Run Code Online (Sandbox Code Playgroud)

java android marshalling parcelable

59
推荐指数
7
解决办法
4万
查看次数

C++ .NET将System :: String转换为std :: string

如何在C++ .NET中将System :: String转换为std :: string?

.net c++ string marshalling

53
推荐指数
4
解决办法
6万
查看次数

C#性能 - 使用不安全的指针而不是IntPtr和Marshal

我正在将C应用程序移植到C#中.C应用程序从第三方DLL调用许多函数,所以我在C#中为这些函数编写了P/Invoke包装器.其中的一些C函数分配,我有在C#应用程序使用的数据,所以就用IntPtr的,Marshal.PtrToStructure并且Marshal.Copy到本机数据(数组和结构)复制到管理变量.

不幸的是,C#app被证明比C版慢得多.快速的性能分析表明,上述基于编组的数据复制是瓶颈.我正在考虑通过重写它以使用指针来加速C#代码.由于我没有C#中不安全的代码和指针的经验,我需要有关以下问题的专家意见:

  1. 使用unsafe代码和指针而不是IntPtrMarshaling有什么缺点?例如,它是否以任何方式更不安全(双关语)?人们似乎更喜欢编组,但我不知道为什么.
  2. 使用P/Invoking指针真的比使用编组快吗?大约可以预期多少加速?我找不到任何基准测试.

示例代码

为了使情况更加清晰,我将一个小的示例代码(实际代码复杂得多)整合在一起.我希望这个例子说明我在谈论"不安全的代码和指针"与"IntPtr和Marshal"时的意思.

C库(DLL)

MyLib.h

#ifndef _MY_LIB_H_
#define _MY_LIB_H_

struct MyData 
{
  int length;
  unsigned char* bytes;
};

__declspec(dllexport) void CreateMyData(struct MyData** myData, int length);
__declspec(dllexport) void DestroyMyData(struct MyData* myData);

#endif // _MY_LIB_H_
Run Code Online (Sandbox Code Playgroud)

MyLib.c

#include <stdlib.h>
#include "MyLib.h"

void CreateMyData(struct MyData** myData, int length)
{
  int i;

  *myData = (struct MyData*)malloc(sizeof(struct MyData));
  if (*myData != NULL)
  {
    (*myData)->length = length; …
Run Code Online (Sandbox Code Playgroud)

c c# pinvoke unsafe marshalling

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

在Golang中使用长数字的JSON Marshaling给出了浮点数

我正在使用golang编组一个解组JSON,当我想用​​数字字段进行编码时,golang会以浮点数转换它,而不是使用长数字.

我有以下JSON:

{
    "id": 12423434, 
    "Name": "Fernando"
}
Run Code Online (Sandbox Code Playgroud)

将它封送到地图并再次解组为json字符串后,我得到:

{
    "id":1.2423434e+07,
    "Name":"Fernando"
}
Run Code Online (Sandbox Code Playgroud)

如您所见,"id"字段采用浮点表示法.

我正在使用的代码如下:

package main

import (
    "encoding/json"
    "fmt"
    "os"
)

func main() {

    //Create the Json string
    var b = []byte(`
        {
        "id": 12423434, 
        "Name": "Fernando"
        }
    `)

    //Marshal the json to a map
    var f interface{}
    json.Unmarshal(b, &f)
    m := f.(map[string]interface{})

    //print the map
    fmt.Println(m)

    //unmarshal the map to json
    result,_:= json.Marshal(m)

    //print the json
    os.Stdout.Write(result)

}
Run Code Online (Sandbox Code Playgroud)

它打印:map [id:1.2423434e + 07姓名:Fernando] {"姓名":"Fernando","id":1.2423434e + 07}

似乎地图的第一个元帅会产生FP.我该如何修复它?

这是goland游乐场的节目链接: …

floating-point json marshalling go

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

什么是对象编组?

我听过这个经常使用的概念,但我对它的内容并没有很好的掌握.

glossary terminology marshalling

49
推荐指数
4
解决办法
2万
查看次数

"使用包含ClassLoader作为参数的Parcel.read方法时,解组<myclass>"时出现"BadParcelableException:ClassNotFoundException"

给定一个自定义类org.example.app.MyClass implements Parcelable,我想写List<MyClass>一个包.我做了编组

 List<MyClass> myclassList = ...
 parcel.writeList(myclassList);
Run Code Online (Sandbox Code Playgroud)

每当我试图解散课程时

 List<MyClass> myclassList = new ArrayList<MyClass>();
 parcel.readList(myclassList, null);
Run Code Online (Sandbox Code Playgroud)

有一个"BadParcelableException: ClassNotFoundException when unmarshalling org.example.app.MyClass"例外.

这有什么不对?为什么找不到课程?

android marshalling unmarshalling parcel

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