gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 10:10:20 26 4
gpt4 key购买 nike

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

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

例如:

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:{}}}

我从以下测试 map 开始:

        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);

结果是:

    {
"file" : "/images/bolivia.jpg",
"sizes" : {
"test1" : "t1"
},
"width" : 450,
"height" : 450
}

最佳答案

Java 不使用 PHP 的数组序列化格式,因此您必须自己编写或更改方法。您有以下选择:

  1. 迭代Map的条目,并为每个条目输出其类型,s代表Stringi代表int等以及其余信息(String包括长度等)

  2. 从您的 PHP 脚本中,更改方法,使用 JSON 代替读取 PHP 的数组序列化。这更像是一个开放的事实上的标准,您也可以使用其他编程语言,因为现在大多数语言都支持 JSON 或者有简单的库来实现这一点。

  3. 使用将 Java 对象保存为 PHP 序列化格式的库。仅当您无法控制 PHP 脚本并且绝对无法在不破坏其他内容的情况下更改它时,我才会推荐此选项。如果您不拥有 PHP 代码,或者无法有效维护它,那么它可能是一个可行的选择。快速搜索执行此操作的 Java 库,例如:

https://github.com/marcospassos/java-php-serializer

关于java - 如何将 Java Map 序列化为 PHP 的数组序列化格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52440362/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com