Java 刷新JSON格式的自定义对象哈希映射
我有一张地图:Java 刷新JSON格式的自定义对象哈希映射,java,android,json,jackson,Java,Android,Json,Jackson,我有一张地图: HashMap<LatLng,ArrayList<String>> dictionary = new HashMap<LatLng,ArrayList<String>>() ; 以下是编写json文件的方式: "lat/lng: (39.151783,20.97455)": [ "/mnt/sdcard/Android/data/example.perifereia_hpeirou/files/lala/photos/pic1.
HashMap<LatLng,ArrayList<String>> dictionary = new HashMap<LatLng,ArrayList<String>>() ;
以下是编写json文件的方式:
"lat/lng: (39.151783,20.97455)": [
"/mnt/sdcard/Android/data/example.perifereia_hpeirou/files/lala/photos/pic1.nomedia",
"/mnt/sdcard/Android/data/example.perifereia_hpeirou/files/lala/photos/pic2.nomedia",
"/mnt/sdcard/Android/data/example.perifereia_hpeirou/files/lala/photos/pic3.nomedia",
"/mnt/sdcard/Android/data/example.perifereia_hpeirou/files/lala/photos/pic4.nomedia"
]
我认为这是不对的。我认为“lat/lng”:不应该存在,我如何纠正这一点?
谢谢您的时间。只需刷新HashMap的值即可
mapper.writeValue(new File(MyApplication.getOfflineData()+"/Dictionary.json"), dictionary.values())
如果要自定义LatLng的表示形式,请重写LatLng的toString()。当使用复杂的POJO类作为
映射中的键时,Jackson
必须使用该类生成属性名称。最简单的实现是使用toString
方法。在JSON
中,我们无法创建复杂的属性名。对象不能是属性。为了解决您的问题,我建议创建新的POJO类,它包含LatLng
和List
属性。见示例:
class Root {
private LatLng latLng;
private List<String> values;
//getters,setters
}
无法重写它LatLng不是我的类我将尝试前一种方法,然后返回到一个自定义类中,可能将LatLong包装成一个自定义类,然后重写toString(),您可以显示您的LatLng类吗?
class Root {
private LatLng latLng;
private List<String> values;
//getters,setters
}
{
"latLng" : {
"lat" : "39.151783",
"lng" : "20.97455"
},
"values" : [ "/mnt/sdcard/Android/data/example.perifereia_hpeirou/files/lala/photos/pic1.nomedia", "/mnt/sdcard/Android/data/example.perifereia_hpeirou/files/lala/photos/pic2.nomedia" ]
}