Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java文件中存储实现org.apache.geode.pdx.PdxSerializable的对象_Java_Java 8_Nio_Geode - Fatal编程技术网

如何在java文件中存储实现org.apache.geode.pdx.PdxSerializable的对象

如何在java文件中存储实现org.apache.geode.pdx.PdxSerializable的对象,java,java-8,nio,geode,Java,Java 8,Nio,Geode,我有一个类实现了org.apache.geode.pdx.PdxSerializable,需要将它的对象存储在java文件中。要存储在文件中,对象需要是可序列化的,但类PDXSerializable用于在gemfire中存储数据,因此我们不能使用可序列化类。为什么不使用自定义对象序列化?。下面是一个我很快创建的示例 private class Foo implements PdxSerializable { private String bar; privat

我有一个类实现了
org.apache.geode.pdx.PdxSerializable
,需要将它的对象存储在java文件中。要存储在文件中,对象需要是可序列化的,但类PDXSerializable用于在gemfire中存储数据,因此我们不能使用可序列化类。

为什么不使用自定义对象序列化?。下面是一个我很快创建的示例


 private class Foo implements PdxSerializable {
        private String bar;
        private Integer baz;

        public Foo(final String bar, final Integer baz) {

            this.bar = bar;
            this.baz = baz;
        }

        public String getBar() {
            return bar;
        }

        public Integer getBaz() {
            return baz;
        }
        public void toData(PdxWriter out) {
         //your pdx stuff
        }

        public void fromData(PdxReader in) {
          //your pdx work
        }
    }

//and a custom reader and writer 
     private void writeCustom(final Foo foo, final Path path) throws IOException {
        try(ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream(path.toFile()))) {
            objectOutputStream.writeChars(foo.getBar());
            objectOutputStream.writeInt(foo.getBaz());
        }
    }

    private Foo readCustom(final Path path) throws IOException {
        try(ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream(path.toFile()))) {
            String bar = objectInputStream.readUTF();
            Integer baz = objectInputStream.readInt();
            return new Foo(bar, baz);
        }
    }
自定义序列化Oracle文档-


类似的问题有很好的答案-

您可能想看看JSONFormatter:

它有一个将PDXInstance转换为JSON字符串的静态方法

假设数据在GemFire中,那么将其作为PDXInstance输出只需要编写一个简单的客户端,并将“pdx读取序列化”设置为true。使用该设置,当您的客户端调用get或get时,返回的所有对象都将是pdxinstance,您可以使用JSONFormatter将它们直接转换为JSON