繁体   English   中英

将JSON转换为List <List<String> &gt;在Java中

[英]Convert JSON to List<List<String>> in Java

我这样用Json String,

json= [{"id":"1","label":"2","code":"3"},{"id":"4","label":"5","code":"6"}]

我尝试通过这种方式将它转换为Java Object,使用Gson,

和一个名为Item.java的Pojo,其中包含id,label和code以及getter setter字段。

String id;
    String label;
    String code;
    //getter setters

Gson gson = new Gson();
List<Item> items = gson.fromJson(json, new TypeToken<List<Item>>(){}.getType());

然后用这种方式将Java Object转换为List,

List<String> strings = new ArrayList<String>();
        for (Object object : items) {
            strings.add(object != null ? object.toString() : null);
}

我的输出是这样的,

[Item [id=1, label=2, code=3], Item [id=6, label=5, code=6]

但我需要它作为List<List<String>>而没有[Items] ie,

[[id=1, label=2, code=3],[id=4, label=5, code=6]]

or direct 



List<List<String>>

没有钥匙。

[[1, 2, 3],[4, 5, 6]]

我错过了什么? 有人可以帮助我吗?

您已发布的代码为您提供了List<Item> ,因此您只是不确定如何构建List<List<String>>

你在这做什么:

for (Object object : items) {

未能利用itemsList<Item>而不是List<Object>这一事实。

您可以创建一个增强的for循环,将实际的Item拉出来,如下所示:

for (Item item : items) {

这将允许您正确访问其中的数据以构建子列表:

    String json = "[{id:1,label:2,code:3},{id:4,label:5,code:6}]";
    List<Item> items = new Gson().fromJson(json, new TypeToken<List<Item>>(){}.getType());

    List<List<String>> listOfLists = new ArrayList<>();
    for (Item item : items) {
        List<String> subList = new ArrayList<>();
        subList.add(item.getId());
        subList.add(item.getLabel());
        subList.add(item.getCode());
        listOfLists.add(subList);
    }

    System.out.println(listOfLists);  // [[1, 2, 3], [4, 5, 6]]

然而

如果只是你不喜欢List<Item>的输出格式,修复代码的一种更简单的方法就是覆盖toString() ,以便打印出你需要的东西。

如果我在Item创建toString()方法,如下所示:

public class Item {
    private String id;
    private String label;
    private String code;

    @Override
    public String toString() {
        return "[" + id + ", " + label + ", " + code + "]";
    }

    // getters, setters...
}

...然后当我打印List<Item>它看起来就像你想要的那样:

    String json = "[{id:1,label:2,code:3},{id:4,label:5,code:6}]";
    List<Item> items = new Gson().fromJson(json, new TypeToken<List<Item>>(){}.getType());
    System.out.println(items);  // [[1, 2, 3], [4, 5, 6]]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM