有没有办法在没有写入文件的情况下使用Jackson将Map转换为JSON表示? [英] Is there any way to convert a Map to a JSON representation using Jackson without writing to a file?
问题描述
我正在尝试使用Jackson将HashMap转换为JSON表示。
I'm trying to use Jackson to convert a HashMap to a JSON representation.
但是,我看到的所有方法都涉及写入文件然后读回来,看起来真的很低效。我想知道是否还有直接这样做?
However, all the ways I've seen involve writing to a file and then reading it back, which seems really inefficient. I was wondering if there was anyway to do it directly?
这是一个我想做的实例的例子
Here's an example of an instance where I'd like to do it
public static Party readOneParty(String partyName) {
Party localParty = new Party();
if(connection==null) {
connection = new DBConnection();
} try {
String query = "SELECT * FROM PureServlet WHERE PARTY_NAME=?";
ps = con.prepareStatement(query);
ps.setString(1, partyName);
resultSet = ps.executeQuery();
meta = resultSet.getMetaData();
String columnName, value;
resultSet.next();
for(int j=1;j<=meta.getColumnCount();j++) { // necessary to start at j=1 because of MySQL index starting at 1
columnName = meta.getColumnLabel(j);
value = resultSet.getString(columnName);
localParty.getPartyInfo().put(columnName, value); // this is the hashmap within the party that keeps track of the individual values. The column Name = label, value is the value
}
}
}
public class Party {
HashMap <String,String> partyInfo = new HashMap<String,String>();
public HashMap<String,String> getPartyInfo() throws Exception {
return partyInfo;
}
}
输出看起来像这样
"partyInfo": {
"PARTY_NAME": "VSN",
"PARTY_ID": "92716518",
"PARTY_NUMBER": "92716518"
}
到目前为止每个例子我都是我们遇到使用 ObjectMapper
涉及写入文件然后再读回来。
So far every example I've come across of using ObjectMapper
involves writing to a file and then reading it back.
是否有杰克逊版的Java HashMap
或地图
这与我实施的方式类似吗?
Is there a Jackson version of Java's HashMap
or Map
that'll work in a similar way to what I have implemented?
推荐答案
将地图传递给 ObjectMapper.writeValueAsString(Object value)
它比使用 StringWriter
更有效,< a href =http://jackson.codehaus.org/1.7.9/javadoc/org/codehaus/jackson/map/ObjectMapper.html#writeValueAsString%28java.lang.Object%29>根据文档:
可用于将任何Java值序列化为String的方法。在功能上等同于使用StringWriter调用writeValue(Writer,Object)并构造String,但效率更高。
Method that can be used to serialize any Java value as a String. Functionally equivalent to calling writeValue(Writer,Object) with StringWriter and constructing String, but more efficient.
示例
import org.codehaus.jackson.map.ObjectMapper;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
public class Example {
public static void main(String[] args) throws IOException {
Map<String,String> map = new HashMap<>();
map.put("key1","value1");
map.put("key2","value2");
String mapAsJson = new ObjectMapper().writeValueAsString(map);
System.out.println(mapAsJson);
}
}
这篇关于有没有办法在没有写入文件的情况下使用Jackson将Map转换为JSON表示?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!