我有一个输入列表,必须将其转换为Java中定义的格式

问题描述 投票:1回答:3

不确定以以下格式获取此列表的最佳方法。请提出在Java中获取此格式的更好方法。下面的列表也是动态的。有时值最多可以达到10个或更多

List<String> list = Arrays.asList("ABC", "DEF", "GHI");

现在我们希望上面的列表打印如下-

[{"key" : "ABC"}, {"key" : "DEF"}, {"key" : "GHI"}]

我尝试使用如下所示的MultiMap

Multimap<String, String> multimap = ArrayListMultimap.create();

multimap.put("key", "ABC");
multimap.put("key", "DEF");
multimap.put("key", "GHI");

打印哪个值,如

{key=[ABC, DEF, GHI]}
java
3个回答
0
投票

字符串是不可变的。因此,您必须在列表中再次设置该值。试试这个。

List<String> list = Arrays.asList("ABC", "DEF", "GHI");
for(int i = 0; i < list.size();i++){                  
    list.set(i,"{\"key\" : \""+list.get(i)+"\"}");
}

0
投票

您可以访问基础条目结构multimap.entries()并根据需要设置字符串格式。

multimap.entries().stream()
      .map(entry -> String.format("{\"%s\": \"%s\"}", entry.getKey(), entry.getValue()))
      .collect(Collectors.toList()));

ernest_k已经提供了两种不错的方法来在注释部分中获取所需的字符串。您可以通过编写可以使用键的自定义类来扩展这些解决方案。

List<String> list = Arrays.asList("ABC", "DEF", "GHI");
MapKeyToValues keyValues = new MapKeyToValues("key", list); // change key as per your need
System.out.println(keyValues);
String formattedString = keyValues.toString();

自定义转换器类。

public class MapKeyToValues {
    private final String key;
    private final List<String> list;

    public MapKeyToValues(String key, List< String > list) {
        this.key = key;
        this.list = list;
    }

    @Override
    public String toString( ) {
       // need to handle null cases here
       return list.stream()
                .map(value -> String.format("{\"%s\" : \"%s\"}", key, value))
                .collect(Collectors.toList()).toString();
    }
}

0
投票

有很多方法可以做到这一点,几乎没有(至少使用Java8):

public class Testinggg {
    public static void main(String[] args) {
        List<String> list = Arrays.asList("ABC", "DEF", "GHI");
        System.out.println(list.stream().collect(Collectors.joining("\"}, {\"key\":\"", "[{\"key\":\"", "\"}]")));
        System.out.println(list.stream().map(e-> String.format("{\"key\":" + "\"%s\"}",e)).collect(Collectors.toList()));
        System.out.println(list.stream().map(item -> "{\"key\":\"" + item + "\"}").collect(Collectors.joining(", ","[","]")));
    }
}

但是似乎您正在尝试将其转换为类似于json的格式,因此使用诸如jackson或gson之类的库将变得很少。如果您将开始处理更复杂的对象,那就更少了。看到这个Converting Java objects to JSON with Jackson

© www.soinside.com 2019 - 2024. All rights reserved.