我有一个具有这种格式的字符串(它是分配给String的Map列表)
[{code=1, data=Male} , {code=2, data=Female}]。。如何将上面的字符串解析回映射列表。不使用任何String.split函数(因为它容易出错)
这是我试过的密码..。但是用分裂函数..。
if(!string.equals("")){
String[] listArray = string.split(DELIMITER);
for (int i=0;i<listArray.length;i++) {
String val=listArray[i];
val = val.replaceAll("[\\{\\}]", "");
//Gets the value from DATA key
if(val.split(EQDELIMITER)[0].trim().equalsIgnoreCase("DATA")){
try{
map.put("DATA", val.split(EQDELIMITER)[1]);
}catch(IndexOutOfBoundsException e){
map.put("DATA", "");
}
}
//Gets the value from CODE key
if(val.split(EQDELIMITER)[0].trim().equalsIgnoreCase("CODE")){
try{
map.put("CODE", val.split(EQDELIMITER)[1]);
}catch(IndexOutOfBoundsException e){
map.put("CODE", "");
}
}
if (map != null && map.size() >= 2) {
//add map to codeList
codeList.add(map);
map = new HashMap<String,Object>();
}
}
}发布于 2016-10-12 05:15:52
如果您足够灵活地使用库,那么使用google的GSON
Map map = gson.fromJson(jsonString, Map.class);由于您需要地图列表,所以您也可以使用TypeToken
List<Map<E,V>> list= new Gson().fromJson(jsonString,
new TypeToken<List<Map<E, V>>() {}.getType());用实际类型替换E,V。
发布于 2016-10-12 05:25:32
为什么你不能去找object .(org.codehaus.jackson.map.ObjectMapper)
会是这样的..。
ObjectMapper mapper= new ObjectMapper();
Map<Integer,String> map = mapper.readValue(yourString,org.codehaus.jackson.type.TypeReference.TypeReference<Map<Integer,String>>() {
});https://stackoverflow.com/questions/39990924
复制相似问题