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" ]
}