spa*_*key 130 java dictionary pretty-print
我正在寻找一种漂亮的印刷方式Map.
map.toString() 给我: {key1=value1, key2=value2, key3=value3}
我希望在我的地图条目值中有更多的自由,我正在寻找更像这样的东西: key1="value1", key2="value2", key3="value3"
我写了这段小代码:
StringBuilder sb = new StringBuilder();
Iterator<Entry<String, String>> iter = map.entrySet().iterator();
while (iter.hasNext()) {
Entry<String, String> entry = iter.next();
sb.append(entry.getKey());
sb.append('=').append('"');
sb.append(entry.getValue());
sb.append('"');
if (iter.hasNext()) {
sb.append(',').append(' ');
}
}
return sb.toString();
Run Code Online (Sandbox Code Playgroud)
但我确信有更优雅和简洁的方法来做到这一点.
Ark*_*ski 295
Arrays.toString(map.entrySet().toArray())
Run Code Online (Sandbox Code Playgroud)
小智 68
看看Guava图书馆:
Joiner.MapJoiner mapJoiner = Joiner.on(",").withKeyValueSeparator("=");
System.out.println(mapJoiner.join(map));
Run Code Online (Sandbox Code Playgroud)
ada*_*shr 60
或者把你的逻辑变成一个整洁的小班.
public class PrettyPrintingMap<K, V> {
private Map<K, V> map;
public PrettyPrintingMap(Map<K, V> map) {
this.map = map;
}
public String toString() {
StringBuilder sb = new StringBuilder();
Iterator<Entry<K, V>> iter = map.entrySet().iterator();
while (iter.hasNext()) {
Entry<K, V> entry = iter.next();
sb.append(entry.getKey());
sb.append('=').append('"');
sb.append(entry.getValue());
sb.append('"');
if (iter.hasNext()) {
sb.append(',').append(' ');
}
}
return sb.toString();
}
}
Run Code Online (Sandbox Code Playgroud)
用法:
Map<String, String> myMap = new HashMap<String, String>();
System.out.println(new PrettyPrintingMap<String, String>(myMap));
Run Code Online (Sandbox Code Playgroud)
注意:您也可以将该逻辑放入实用程序方法中.
tbr*_*aun 31
Apache库来救援!
MapUtils.debugPrint(System.out, "myMap", map);
Run Code Online (Sandbox Code Playgroud)
所有你需要的Apache commons-collections库(项目链接)
Maven用户可以使用此依赖项添加库:
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
Ali*_*aka 15
简单易行.欢迎来到JSON世界.使用谷歌的Gson:
new Gson().toJson(map)
Run Code Online (Sandbox Code Playgroud)
带3个键的地图示例:
{"array":[null,"Some string"],"just string":"Yo","number":999}
Run Code Online (Sandbox Code Playgroud)
Tha*_*wda 13
当我org.json.JSONObject在类路径中时,我做:
Map<String, Object> stats = ...;
System.out.println(new JSONObject(stats).toString(2));
Run Code Online (Sandbox Code Playgroud)
(这个精美的缩进列表,集合和地图可以嵌套)
使用Java 8 Streams:
Map<Object, Object> map = new HashMap<>();
String content = map.entrySet()
.stream()
.map(e -> e.getKey() + "=\"" + e.getValue() + "\"")
.collect(Collectors.joining(", "));
System.out.println(content);
Run Code Online (Sandbox Code Playgroud)
我更喜欢将地图转换为JSON字符串:
支持对象中的嵌套复杂类型
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
public static String getAsFormattedJsonString(Object object)
{
ObjectMapper mapper = new ObjectMapper();
try
{
return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(object);
}
catch (JsonProcessingException e)
{
e.printStackTrace();
}
return "";
}
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
144002 次 |
| 最近记录: |