标签: object-serialization

什么是对象序列化?

"对象序列化"是什么意思?你能用一些例子解释一下吗?

java serialization object-serialization

373
推荐指数
8
解决办法
28万
查看次数

将PHP对象序列化为JSON

所以当我偶然发现新的JsonSerializable接口时,我在php.net上闲逛,了解有关将PHP对象序列化为JSON的信息.它只有PHP> = 5.4,而且我在5.3.x环境中运行.

这种功能如何实现PHP <5.4

我还没有使用JSON,但是我正在尝试在应用程序中支持API层,并且将数据对象(否则将被发送到视图)转储到JSON中将是完美的.

如果我尝试直接序列化对象,它会返回一个空的JSON字符串; 这是因为我认为json_encode()不知道该对象究竟做了什么.应予递归降低对象到一个数组,然后编码


$data = new Mf_Data();
$data->foo->bar['hello'] = 'world';
Run Code Online (Sandbox Code Playgroud)

echo json_encode($data) 产生一个空对象:

{}
Run Code Online (Sandbox Code Playgroud)

var_dump($data) 但是,按预期工作:

object(Mf_Data)#1 (5) {
  ["_values":"Mf_Data":private]=>
  array(0) {
  }
  ["_children":"Mf_Data":private]=>
  array(1) {
    [0]=>
    array(1) {
      ["foo"]=>
      object(Mf_Data)#2 (5) {
        ["_values":"Mf_Data":private]=>
        array(0) {
        }
        ["_children":"Mf_Data":private]=>
        array(1) {
          [0]=>
          array(1) {
            ["bar"]=>
            object(Mf_Data)#3 (5) {
              ["_values":"Mf_Data":private]=>
              array(1) {
                [0]=>
                array(1) {
                  ["hello"]=>
                  string(5) "world"
                }
              }
              ["_children":"Mf_Data":private]=>
              array(0) …
Run Code Online (Sandbox Code Playgroud)

php json object object-serialization

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

泡菜和搁置之间有什么区别?

我是第一次学习对象序列化.我尝试阅读和"谷歌搜索"模块泡菜和搁置的差异,但我不确定我理解它.什么时候使用哪一个?Pickle可以将每个python对象转换为可以保存到文件中的字节流.那为什么我们需要模块搁置?泡菜不快吗?

python object shelve pickle object-serialization

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

Java对象序列化和继承

假设你有这两个类,Foo和Bar,其中Bar扩展了Foo并实现了它们 Serializable

class Foo {

public String name;

public Foo() {
    this.name = "Default";
}

public Foo(String name) {
    this.name = name;
}
}

class Bar extends Foo implements java.io.Serializable {

public int id;

public Bar(String name, int id) {
    super(name);
    this.id = id;
}
}
Run Code Online (Sandbox Code Playgroud)

请注意,Foo没有实现Serializable.那么当条形序列化时会发生什么?

    public static void main(String[] args) throws Exception {

    FileOutputStream fStream=new FileOutputStream("objects.dat");
    ObjectOutputStream oStream=new ObjectOutputStream(fStream);
    Bar bar=new Bar("myName",21);
    oStream.writeObject(bar);

    FileInputStream ifstream = new FileInputStream("objects.dat");
    ObjectInputStream istream = new ObjectInputStream(ifstream);
    Bar bar1 = …
Run Code Online (Sandbox Code Playgroud)

java inheritance serialization object-serialization

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

在MySql数据库中存储序列化对象

我有一个很大的php对象,我想序列化并存储在MySql数据库中.表编码是,UTF-8并且用于保存序列化对象编码的列也是UTF-8.

问题是该对象包含一个包含法语字符的文本字符串.

例如:

Merci d'avoir passé commande avec Lovre. Voici le récapitulatif de votre commande 
Run Code Online (Sandbox Code Playgroud)

当我序列化对象然后再次反序列化它时,字符串被维护并且格式正确.

但是,当我将序列化对象存储到MySql数据库然后再次检索它然后反序列化它时,字符串变为如下所示:

Merci d'avoir passé commande avec Lovre. Voici le récapitulatif de votre commande 
Run Code Online (Sandbox Code Playgroud)

将对象存储在数据库中时出现问题.

笔记:

  • 使用推进ORM存储对象.
  • 列类型是text.
  • 该字符串存储并从html文件中读取.

php mysql encoding propel object-serialization

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

Java Seralization和Deseralization

我有一个对象如下:

    public class Records implements java.io.Serializable{
        private int cId;
        private int pId;
        private int vlaue;
        private int tag;

        public Records(int c, int p, int v, int t){
                this.cId=c;
                this.pId=p;
                this.value=v;
                this.tag=t;
        }
}
Run Code Online (Sandbox Code Playgroud)

我已经收集了大量数据,构建了上述类中的对象并将它们分解为磁盘.

我忘记包含在类文件中的一个转储是访问每个对象的值的方法.例如,访问特定对象的cId值.

我修改了类定义以添加这样的方法,但后来我无法将对象反序列化回记录类并获得此运行时错误:

java.io.InvalidClassException: Records; local class incompatible: stream classdesc serialVersionUID = -1232612718276774474, local class serialVersionUID = -8244963718951538904
    at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:579)
    at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1600)
    at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1513)
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1749)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1346)
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:368)
    at DeSerialise.main(DeSerialise.java:21)
Run Code Online (Sandbox Code Playgroud)

我想我需要告诉java他们是相同的定义并修改serialVersionUID但不太确定如何?任何想法都会受到欢迎!

java serialization object-serialization deserialization

8
推荐指数
1
解决办法
1085
查看次数

对象序列化/反序列化如何工作?

我正在阅读关于PHP的序列化/反序列化概念.我想知道它们是如何存储在filesystem/db中的.我猜它是二进制格式.但是,我想知道整个班级是如何存储的?我知道数据成员中的数据可以存储,但方法是如何存储的?

我的意思是,PHP如何知道在函数中编写的代码是什么someFunc()

$obj = new ClassName();
$obj->someFunc();
$serial = serialize($obj);
$unserialobj = unserialize($serial);
$unserialobj->someFunc();
Run Code Online (Sandbox Code Playgroud)

PHP可以知道第2行要做什么,但它知道如何在#5行中做一个非序列化对象?它也保存代码吗?

php object-serialization

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

Delphi客户端服务器阵列发送

我需要从服务器向客户端发送动态对象数组.一个例子作为数组,它将类的对象Figure与其坐标,颜色等信息结合在一起.

我试图使用这样的东西来发送数据:

for i := 0 to ServerSocket.Socket.ActiveConnections - 1 do
begin
  ServerSocket.Socket.Connections[i].SendText(some values); // then parsing this text to get values
end;
Run Code Online (Sandbox Code Playgroud)

但是我觉得这样做真的很糟糕.那么,拜托,您能告诉我如何发送和接收某些对象的数组(使用IdTCPClient/ServerClient/ServerSockets)的正确方法吗?

delphi delphi-7 object-serialization

6
推荐指数
1
解决办法
1280
查看次数

如何在硬盘上存储对象?

我正在开发一个项目,该项目使用了几张可以拥有100,000多个密钥的地图.目前我正在使用缩写形式的数据在每个运行时创建地图以节省时间,以便地图只有大约1,000个键.但我想测试我可用的全部数据.

我想知道如何在类中创建一个地图,然后将该对象保存到硬盘驱动器,然后能够在不同的类中引用该对象,这样我每次测试时都不需要创建和填充地图类.我正在使用Eclipse在Java中编写类.

编辑:我相信它被称为对象序列化,但如果它被序列化,我必须在使用前阅读整个地图吗?或者它实际上是否与调用局部变量相同?

java eclipse serialization hard-drive object-serialization

5
推荐指数
1
解决办法
2135
查看次数

如何在Pug中获得对象的价值?

我正在使用Node.js使用Pug渲染页面.我的JavaScript代码:

router.get('/', function(req, res, next) {
  res.render("index",{
    title:"??",
    user:{name:"luo",age:19}
  });
});
Run Code Online (Sandbox Code Playgroud)

我的帕格代码:

script.
    window.user = #{user}
Run Code Online (Sandbox Code Playgroud)

但结果是这样的:

<script>window.user = [object object]</script>
Run Code Online (Sandbox Code Playgroud)

如何正确获取对象的值?

javascript node.js object-serialization pug

5
推荐指数
1
解决办法
3391
查看次数