Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何将Java Map序列化为PHP的数组序列化格式

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

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

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

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

例如:

代码语言:javascript
运行
AI代码解释
复制
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
运行
AI代码解释
复制
        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
运行
AI代码解释
复制
    {
  "file" : "/images/bolivia.jpg",
  "sizes" : {
    "test1" : "t1"
  },
  "width" : 450,
  "height" : 450
}
EN

回答 2

Stack Overflow用户

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

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

代码语言:javascript
运行
AI代码解释
复制
<!-- 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-21 23:21:02

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

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

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

代码语言:javascript
运行
AI代码解释
复制
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

复制
相关文章
MessagePack Java Jackson Dataformat - Map 的序列化和反序列化
本测试方法,可以在 https://github.com/cwiki-us-demo/serialize-deserialize-demo-java/blob/master/src/test/java/com/insight/demo/serialize/MessagePackSerializer.java 中找到。
HoneyMoose
2019/08/12
4990
MessagePack Java Jackson Dataformat - Map 的序列化和反序列化
本测试方法,可以在 https://github.com/cwiki-us-demo/serialize-deserialize-demo-java/blob/master/src/test/java/com/insight/demo/serialize/MessagePackSerializer.java 中找到。
HoneyMoose
2019/08/10
5420
Java 序列化和反序列化为什么要实现 Serializable 接口?
Java 序列化和反序列化是实现对象持久化的一种方式,它可以将 Java 对象转换为二进制字节序列,以便在网络传输或存储到文件系统中。Java 提供了一个 Serializable 接口,该接口提供了一种机制,通过实现该接口使得我们可以对自身进行序列化和反序列化。那为什么要实现 Serializable 接口呢?下面我将从几个方面进行解释。
用户1289394
2023/08/22
3250
Java 序列化和反序列化为什么要实现 Serializable 接口?
MessagePack Java 0.6.X List, Map 对象的序列化和反序列化
为了序列化原生的容器对象例如  List 和 Map 对象,你必须使用 Template。
HoneyMoose
2019/08/07
5680
java 数组转化为list_java中如何将数组转为list集合?
java中将数组转为list集合的方法:1、使用原生方式,使用for()循环来拆分数组,并添加到List中;2、使用Arrays.asList()方法;3、使用Collections.addAll()方法;4、使用List.of()方法。
全栈程序员站长
2022/06/25
1.6K0
java 数组转化为list_java中如何将数组转为list集合?
MessagePack Java 0.6.X List, Map 对象的序列化和反序列化
为了序列化原生的容器对象例如  List 和 Map 对象,你必须使用 Template。
HoneyMoose
2019/08/08
1K0
面试被问Java序列化和反序列化为什么要实现Serializable接口
最近公司的在做服务化, 需要把所有model包里的类都实现Serializable接口, 同时还要显示指定serialVersionUID的值. 听到这个需求, 我脑海里就突然出现了好几个问题, 比如说:
程序员白楠楠
2021/02/25
1.1K0
面试被问Java序列化和反序列化为什么要实现Serializable接口
最近公司的在做服务化, 需要把所有 model 包里的类都实现 Serializable 接口,同时还要显示指定 serialVersionUID 的值。听到这个需求,我脑海里就突然出现了好几个问题,比如说:
格姗知识圈
2021/03/03
5420
面试被问Java序列化和反序列化为什么要实现Serializable接口
如何将一个 .NET 对象序列化为 HTTP GET 的请求字符串
HTTP GET 请求时携带的参数直接在 URL 中,形式如 ?key1=value&key2=value&key3=value。如果是 POST 请求时,我们可以使用一些库序列化为 json 格式作为 BODY 发送,那么 GET 请求呢?有可以直接将其序列化为 HTTP GET 请求的 query 字符串的吗?
walterlv
2023/10/22
3490
Java 的序列化 与 反序列化
我们进行网络传输的时候,是以 二进制数据为单位的。我们在传输的时候 就需要将对象 进行序列化 为字节,这样 我们就可也 进行传输了。比如我们存储Redis数据,假设我们有个 对象叫user,但是 Redis 可识别不了我们Java 虚拟机内存中的 user对象。Redis 只认识 String。将来存储的形式 ,也一定是String。但是 这就带来一个问题。我们将来从Redis读取的字节时候,我们就需要转成Java 对象,我们才能用Java代码进行处理,所以,我们必须按照一个规矩 将对象 进行 所谓的 “加密” 然后 存储后。我们读取的时候 再 “解密“。 “加密” 就叫 序列化 ,”解密” 就叫 反序列化。
收心
2022/01/17
5620
protostuff序列化map_为什么要实现序列化
大家好,又见面了,我是你们的朋友全栈君。 这几天在看rpc框架的东西,一哥们写的轻量级rpc框架(http://my.oschina.net/huangyong/blog/361751?fromerr
全栈程序员站长
2022/08/18
5330
protostuff序列化map_为什么要实现序列化
PHP-序列化与反序列化
1.5 序列化与反序列化 在PHP中,数组和对象无法保存,如果需要保存就要将数组或对象转换成一个序列。 序列化:将数组或对象转换成一个序列(serialize) 反序列化:将序列化的字符串转换成数组
cwl_java
2022/11/30
3560
PHP-序列化与反序列化
PHP中对象的序列化和反序列化
serialize() 可处理除了 resource 之外的任何类型。甚至可以 serialize() 那些包含了指向其自身引用的数组。
宣言言言
2019/12/18
1.4K0
Java的序列化与反序列化
Java的序列化与反序列化是Java中比较重要的一个知识,本文将总结一下,怎么使用序列化功能以及经常遇到的一些问题的解答.
呼延十
2019/07/01
6230
php 序列化对象
习惯性借用手册里面的介绍: 所有php里面的值都可以使用函数serialize()来返回一个包含字节流的字符串来表示。unserialize()函数能够重新把字符串变回php原来的值。序列化一个对象将会保存对象的所有变量,但是不会保存对象的方法,只会保存类的名字。
1_bit
2021/01/14
7030
php 序列化对象
小记 - PHP序列化
序列化 serialize():用于序列化数组或对象,并返回一个字符串。把一个对象变成可以传输的字符串。 数组序列化 <?php $arr = array('a', 'bb', 'ccc');
Naraku
2021/07/29
6390
Jackson 反序列化 Map 集合
仅仅使用 objectMapper.readValue(xxxxx, Map.class) 时,如果原始集合使用了泛型,idea会给出警告 未检查的赋值: 'java.util.Map' 赋值给 'java.util.Map<java.lang.String,java.lang.String>'
MashiroT
2022/10/28
8880
如何将音频转化为aac格式并上传?
在之前的博文中,我们和大家分享了使用EasyNVR视频监控直播平台时,如何实现自定义直播背景音乐,在该文中我们知道可以通过拉流库融合的方式推送。
TSINGSEE青犀视频
2021/02/24
1.3K0
Java对象的序列化和反序列化
Java 对象的序列化和反序列化是一种将对象转换成字节流并存储在硬盘或网络中,以及从字节流中重新加载对象的操作。Java 的序列化和反序列化提供了一种方便的方式,使得可以将对象在不同的应用程序之间进行交互。
阿珍
2023/04/18
1.4K0
java序列化和序列化ID的作用
谈到java序列化其实大家都能说出一二, java对象序列化的意思就是将对象的状态转化成字节流,以后可以通过这些值再生成相同状态的对象。对象序列化是对象持久化的一种实现方法,它是将对象的属性和方法转化为一种序列化的形式用于存储和传输。反序列化当然就是对对象的重建。
Tim在路上
2020/08/04
1.4K0

相似问题

如何将Json反序列化为Map of Map?

320

MessagePack Java序列化为数组

13

如何将Map<String、String>序列化为键数组:值

13

如何将YAML属性序列化为Map

145

使用Java中的Jackson将JSON数组反序列化为Map

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档