标签: serialization

只要它实现Serializable,任何事都可以序列化吗?

我已经看到了这个:如何在java中测试一个类正确地实现了可序列化

我只是有一个更普遍的问题.如果你创建一个这样的对象(比如一个圆圈)(假设有进口):

class Circle implements Serializable {
     int radius;
     Circle(int radius){
         this.radius = radius;
     }

     public void updateRadius(int radius){
         this.radius = radius
     }

     public int getRadius(){
         return radius;
     }
}
Run Code Online (Sandbox Code Playgroud)

它是否需要可序列化所需的全部内容?我是否需要添加更多方法才能正确序列化?我有一个更复杂的课程,但是当这应该提供充足的例子时,并不想发布所有的课程.

java serialization

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

序列化/反序列化的连接字符串是否区分大小写?

如何以区分大小写的方式反序列化字符串?看起来序列化是区分大小写的,反序列化的重点是不区分大小写?

在此输入图像描述

更新:尝试本地化底层的地方和内容,我已经设置了DEBUGGER来下载符号并进入FCL .NET代码.我已经卡在这些代码附近(DbConnectionOptions.cs第873-921行):

private static NameValuePair ParseInternal(Hashtable parsetable, string connectionString, bool buildChain, Hashtable synonyms, bool firstKey) {
    Debug.Assert(null != connectionString, "null connectionstring"); 
    StringBuilder buffer = new StringBuilder();
    NameValuePair localKeychain = null, keychain = null;

        int nextStartPosition = 0; 
        int endPosition = connectionString.Length; 
        while (nextStartPosition < endPosition) {
            int startPosition = nextStartPosition; 

            string keyname, keyvalue;
            nextStartPosition = GetKeyValuePair(connectionString, startPosition, buffer, firstKey, out keyname, out keyvalue);
            if (ADP.IsEmpty(keyname)) { 
                // if (nextStartPosition != endPosition) { throw; }
                break; 
            } 

            string realkeyname …
Run Code Online (Sandbox Code Playgroud)

.net c# serialization connection-string

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

C树XML序列化

我正在尝试递归循环遍历树结构并使用(语言)C将其序列化为字符串.当谈到C(来自Java,C#,动作脚本背景)时,我是一个真正的新手.一般来说,我很难掌握一些东西.

我应该使用库来帮助生成XML吗?如何使用C实现递归?

谢谢

c xml recursion serialization

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

嵌套对象和序列化

我喜欢这个,

Class P {
pub int id;
pub P(id) { this.id = id; }
...
pub Set<Integer> parentTTList;

}

Class TT {
pub int id;
pub TT(id) { this.id = id; }
pub List<P> manyPList;
}

List<TT> manyTTList;

Then TT tA = new TT(1), tB = new TT(2);
P pX = new P(-1), pY = new P(-2);

tA.manyPList.add(pY); pY.parentTTList.add(tA.id);

tA.manyPList.add(pX); pX.parentTTList.add(tA.id);

tB.manyPList.add(pY); pY.parentTTList.add(tB.id);
Run Code Online (Sandbox Code Playgroud)

然后使用ObjectOutputStream将tA和tB序列化为byteArray,我们在byteArray中有多少次pY?Calss P和TT有很多关系,我们有太多人担心尺寸.

java serialization

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

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

C#反序列化通过TCP

我现在遇到了通过TCP反序列化对象的问题.

反序列化时,我得到以下SerializationException(下面的代码):

附加信息:二进制流'0'不包含有效的BinaryHeader.可能的原因是序列化和反序列化之间的无效流或对象版本更改.

序列化代码:

public static void SerializeRO(Stream stream, ReplicableObject ro) {
            MemoryStream serializedObjectStream = new MemoryStream();
            Formatter.Serialize(serializedObjectStream, ro);
            BinaryWriter bw = new BinaryWriter(stream);
            bw.Write(serializedObjectStream.Length);
            serializedObjectStream.WriteTo(stream);
            serializedObjectStream.Close();
            bw.Close();
        }
Run Code Online (Sandbox Code Playgroud)

反序列化代码:

public static List<ReplicableObject> ParseStreamForObjects(Stream stream) {
        List<ReplicableObject> result = new List<ReplicableObject>();
        while (true) {
            if (!(stream as NetworkStream).DataAvailable) break;
            BinaryReader br = new BinaryReader(stream);
            int length = br.ReadInt32();
            byte[] bytes = br.ReadBytes(length);
            MemoryStream ms = new MemoryStream(bytes);
            ms.Position = 0;
                            // ERROR OCCURS ON THE LINE BELOW
            result.Add((ReplicableObject) Formatter.Deserialize(ms));
            ms.Close(); …
Run Code Online (Sandbox Code Playgroud)

c# serialization tcp stream

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

PHP反序列化错误

我收到以下错误: -

消息:unserialize()function.unserialize:错误65517字节的偏移量65517

反序列化是否具有最大大小?

这是PHP中的问题:

$array = unserialize($emails);

// this is the output of $emails (not all of it as it is huge)
string(65535) "a:12134:{i:0;s:29:"12someemail@addr.com ";i:1;s:31:"5myname@email.com "
Run Code Online (Sandbox Code Playgroud)

php serialization syntax-error

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

问题是使用jQuery和PHP序列化复选框

我有要发送给PHP控制器的复选框(都具有相同的'name'属性).这是我的标记的简短片段:

<script type="text/javascript">
$(document).ready(function(){
   $(".someButton").click(function(){
      $.post("my_controller.php",$("#userForm").serialize());
   });
});
</script>   

<?php 
echo '<form id="userForm">';
foreach($users as $user)
{
   echo '<input name="user_id" value="'.$user->id.'">';
}
echo '</form>';
?>
Run Code Online (Sandbox Code Playgroud)

然后,我希望我的控制器将这些值作为统一数组发送到模型,然后可以执行foreach语句.控制器逻辑应该(我认为)是这样的:

foreach($_POST['user_id'] as $user_id)
{
   $user_array[] = $user_id;
}
$this->model->method($user_array);
Run Code Online (Sandbox Code Playgroud)

但我不断收到诸如"为foreach()提供的无效参数"之类的错误,因为除了第一个之外,我认为它没有得到任何其他值.我哪里错了?

php checkbox foreach jquery serialization

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

QVector size()返回大小为零

这两个函数是我尝试序列化QVector.不幸的是,我不能使用QDataStream,因为我的老板要求实现是Qt独立的,而QDataStream会预先设置一个头.所以问题是函数binToVector返回的向量返回的大小等于0,但是如果元素被打印,则它们等于原始向量.如果向量的元素等于原始元素,为什么返回的大小为零?这些序列化功能还可以吗?我不能使用boost和Qt函数来实现它,只能使用C++;

QByteArray vectorToBin(const QVector<qint32> & vec)
{
  QByteArray result;
  foreach(quint32 e, vec) {
    char *src = reinterpret_cast<char*>(&e);
    result.append(src, sizeof(qint32));
  }
  return result;
}

QVector<qint32> binToVector(const QByteArray & bytes) 
{
  int size = sizeof(qint32);
  QVector<qint32> result;
  result.reserve(bytes.count()/size);
  int j=0;
  for(int i=0; i<bytes.count(); i+=size) {
    memcpy(&result[j++], bytes.constData()+i, size);
  }
  return result;
}
Run Code Online (Sandbox Code Playgroud)

c++ serialization qt

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

反向MemoryStream.ToArray()

我正在获取一个httpwebresponse流(一个flash文件),我想将它保存为二进制文件,然后访问该二进制文件并将其显示为flash.现在,我正在将响应流写入MemoryStream,然后在MemoryStream上调用ToArray().我得到一个方便的字节[].

我该如何扭转这个功能?如何从我生成的byte []中获取flash文件的流?

谢谢!

c# binary serialization memorystream stream

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