首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将Java Map序列化为PHP的数组序列化格式

如何将Java Map序列化为PHP的数组序列化格式
EN

Stack Overflow用户
提问于 2018-09-21 17:10:11
回答 2查看 306关注 0票数 1

我想将HashMap转换为String,它对应于下面描述的PHP的数组序列化格式:

http://php.net/manual/en/function.serialize.php

例如:

代码语言:javascript
复制
a:5:{s:5:"width";i:450;s:6:"height";i:352;s:4:"file";s:32:"2018/09/Sawtooth-Oak_450_a-1.jpg";s:5:"sizes";a:9:{s:9:"thumbnail";a:4:{s:4:"file";s:32:"Sawtooth-Oak_450_a-1-150x150.jpg";s:5:"width";i:150;s:6:"height";i:150;s:9:"mime-type";s:10:"image/jpeg";}s:6:"medium";a:4:{s:4:"file";s:32:"Sawtooth-Oak_450_a-1-300x235.jpg";s:5:"width";i:300;s:6:"height";i:235;s:9:"mime-type";s:10:"image/jpeg";}s:32:"twentyseventeen-thumbnail-avatar";a:4:{s:4:"file";s:32:"Sawtooth-Oak_450_a-1-100x100.jpg";s:5:"width";i:100;s:6:"height";i:100;s:9:"mime-type";s:10:"image/jpeg";}s:21:"woocommerce_thumbnail";a:5:{s:4:"file";s:32:"Sawtooth-Oak_450_a-1-250x250.jpg";s:5:"width";i:250;s:6:"height";i:250;s:9:"mime-type";s:10:"image/jpeg";s:9:"uncropped";b:1;}s:18:"woocommerce_single";a:4:{s:4:"file";s:32:"Sawtooth-Oak_450_a-1-350x274.jpg";s:5:"width";i:350;s:6:"height";i:274;s:9:"mime-type";s:10:"image/jpeg";}s:29:"woocommerce_gallery_thumbnail";a:4:{s:4:"file";s:32:"Sawtooth-Oak_450_a-1-100x100.jpg";s:5:"width";i:100;s:6:"height";i:100;s:9:"mime-type";s:10:"image/jpeg";}s:12:"shop_catalog";a:4:{s:4:"file";s:32:"Sawtooth-Oak_450_a-1-250x250.jpg";s:5:"width";i:250;s:6:"height";i:250;s:9:"mime-type";s:10:"image/jpeg";}s:11:"shop_single";a:4:{s:4:"file";s:32:"Sawtooth-Oak_450_a-1-350x274.jpg";s:5:"width";i:350;s:6:"height";i:274;s:9:"mime-type";s:10:"image/jpeg";}s:14:"shop_thumbnail";a:4:{s:4:"file";s:32:"Sawtooth-Oak_450_a-1-100x100.jpg";s:5:"width";i:100;s:6:"height";i:100;s:9:"mime-type";s:10:"image/jpeg";}}s:10:"image_meta";a:12:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";s:11:"orientation";s:1:"0";s:8:"keywords";a:0:{}}}

我从下面的测试地图开始:

代码语言:javascript
复制
        HashMap images2 = new HashMap();
        images2.put("test1", "t1");

        imagesArray.put("width", image.getWidth());
        imagesArray.put("height", image.getHeight());
        imagesArray.put("file", destinationFile);
        imagesArray.put("sizes", images2);

String jsonResult = mapper.writerWithDefaultPrettyPrinter()
                                .writeValueAsString(imageMap);

                        System.out.println(jsonResult);

结果是:

代码语言:javascript
复制
    {
  "file" : "/images/bolivia.jpg",
  "sizes" : {
    "test1" : "t1"
  },
  "width" : 450,
  "height" : 450
}
EN

回答 2

Stack Overflow用户

发布于 2018-09-21 18:36:56

好的,我找到了解决方案--我将使用

代码语言:javascript
复制
<!-- https://mvnrepository.com/artifact/com.xk72/pherialize -->
<dependency>
    <groupId>com.xk72</groupId>
    <artifactId>pherialize</artifactId>
    <version>1.2.4</version>
</dependency>
票数 0
EN

Stack Overflow用户

发布于 2018-09-22 07:21:02

考虑使用Google的protobufs (原型缓冲区)。Protobuf是用多种语言实现的,包括Java、Python、C++等等。

它具有独立于语言的优点--您可以定义buffer结构,并将定义文件编译成您选择的语言。

下面是一个包含2个字段的协议的简单示例,只是为了给出一个概念:

代码语言:javascript
复制
syntax = "proto2";
message CookiejarTransaction {
    optional string action = 1; // Action is either "bake" or "eat"
    optional uint32 amount = 2; // Amount is number of cookies
}

免责声明:我对Protobufs不感兴趣,只对使用该工具的快乐开发人员感兴趣。

https://developers.google.com/protocol-buffers/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52440362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档