java - java中的逗号吐出/分隔jsonnode

标签 java csv split jsonnode

在下面的场景中,迭代名为“name”的逗号分隔 json 节点的最佳方法是什么?

GetStoredValue result = 
dataManagerService.getStoredValue(itemId).checkedGet();
JsonNode node = mapper.readTree(result.getStoredString());
if (node.has("name")
    && node.has("price")
    && node.has("sku"))
{
    //iterate through comma delimited "name" value and return the dataSources
    //node: {"name":"test1,test2", "price":30, "sku":"123123123"}

    //return:
    //{"name":"test1", "price":30, "sku":"123123123"}
    //{"name":"test2", "price":30, "sku":"123123123"}

    ComboPooledDataSource dataSource = createDataSource(node);
    dataSources.put(itemId, dataSource);
    return dataSources.get(itemId);
}

最佳答案

是的,如果您想将单个节点基本上分成两个,String.split 将是显而易见的解决方案。

如果您的目标类有一个可以用来创建它的构建器,那可能是最好的,这样您就可以执行如下操作:

private List<Product> fromJsonNode(JsonNode node) {
    String[] names = node.get("name").textValue().split(",");
    // create list of known size
    List<Product> products = new ArrayList<>(ids.length);
    // these values will remain the same for all products
    ProductBuilder builder = Product.builder()
                                    .price(node.get("price").numberValue())
                                    .sku(node.get("sku").textValue());
    for (String name : names) {
        // just set the name and create the product with it
        products.add(builder.name(name).build());
    }
    return products;
}

关于java - java中的逗号吐出/分隔jsonnode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56404124/

相关文章:

sql - 按空格分割字符串

c# - TWICE如何分割字符串

java - Java根据部分文件名检查文件是否存在

c - 如何在支持空字段的同时使用 sscanf 解析逗号分隔字符串中的字段?

c++ - 如何将程序拆分为文件类 C++

java - 使用 CSV 解析器根据多个约束验证每个归档

java - 关于Java Split命令解析csv文件

java - 隐藏工具栏中的元素,在单个 Activity 、各种 fragment 上实现

java - 如何使用 LibSVM 进行 'multi classification' 方法?

java - for 循环的内存占用