我试着做这样的事情,但它不起作用:
Map<String, String> propertyMap = new HashMap<String, String>();
propertyMap = JacksonUtils.fromJSON(properties, Map.class);
但是IDE说:
未选中的
assignment
Map to Map<String,String>
这样做的正确方法是什么?我之所以使用Jackson,只是因为它已经在项目中可用了,有没有一种原生的Java方法来转换JSON?
在PHP中,我会简单地json_decode($str)
,然后我会得到一个数组。我在这里基本上需要同样的东西。
发布于 2010-03-27 01:04:42
更新2020年9月虽然我在这里的原始答案,多年前,似乎是有帮助的,并仍然得到越来越多的支持,我现在使用来自谷歌的GSON库,我发现它更直观。
我得到了以下代码:
public void testJackson() throws IOException {
ObjectMapper mapper = new ObjectMapper();
File from = new File("albumnList.txt");
TypeReference<HashMap<String,Object>> typeRef
= new TypeReference<HashMap<String,Object>>() {};
HashMap<String,Object> o = mapper.readValue(from, typeRef);
System.out.println("Got " + o);
}
它是从文件中读取的,但mapper.readValue()
也会接受InputStream
,您可以使用以下命令从字符串中获取InputStream
:
new ByteArrayInputStream(astring.getBytes("UTF-8"));
在my blog上有更多关于映射器的解释。
发布于 2010-06-20 01:42:23
试试TypeFactory
。以下是Jackson JSON (2.8.4)的代码。
Map<String, String> result;
ObjectMapper mapper;
TypeFactory factory;
MapType type;
factory = TypeFactory.defaultInstance();
type = factory.constructMapType(HashMap.class, String.class, String.class);
mapper = new ObjectMapper();
result = mapper.readValue(data, type);
以下是Jackson JSON的旧版本的代码。
Map<String, String> result = new ObjectMapper().readValue(
data, TypeFactory.mapType(HashMap.class, String.class, String.class));
发布于 2010-03-27 02:24:48
你得到的警告是由编译器完成的,而不是由库(或实用方法)完成的。
直接使用Jackson的最简单方法是:
HashMap<String,Object> props;
// src is a File, InputStream, String or such
props = new ObjectMapper().readValue(src, new TypeReference<HashMap<String,Object>>() {});
// or:
props = (HashMap<String,Object>) new ObjectMapper().readValue(src, HashMap.class);
// or even just:
@SuppressWarnings("unchecked") // suppresses typed/untype mismatch warnings, which is harmless
props = new ObjectMapper().readValue(src, HashMap.class);
你调用的实用方法可能会做类似这样的事情。
https://stackoverflow.com/questions/2525042
复制相似问题