java中的逗号spit/分隔jsonnode

java中的逗号spit/分隔jsonnode,java,iterator,delimiter,comma,jsonnode,Java,Iterator,Delimiter,Comma,Jsonnode,在下面的场景中,迭代名为“name”的逗号分隔json节点的最佳方式是什么 GetStoredValue result = dataManagerService.getStoredValue(itemId).checkedGet(); JsonNode node = mapper.readTree(result.getStoredString()); if (node.has("name") &&a

在下面的场景中,迭代名为“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;
}
来自JsonNode的私有列表(JsonNode){ String[]names=node.get(“name”).textValue().split(“,”); //创建已知大小的列表 列表产品=新的ArrayList(id.length); //所有产品的这些值将保持不变 ProductBuilder=Product.builder() .price(node.get(“price”).numberValue()) .sku(node.get(“sku”).textValue()); for(字符串名称:名称){ //只需设置名称并使用它创建产品 products.add(builder.name(name.build()); } 退货产品; }
您是否尝试了
String.split()
?我尝试了,这是最好的方法吗?