Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中使用键对Json响应进行分组_Java_Arrays_Json - Fatal编程技术网

在java中使用键对Json响应进行分组

在java中使用键对Json响应进行分组,java,arrays,json,Java,Arrays,Json,我是java开发新手。我正在学习json解析。我得到了类似这样的json响应 "sizePrices": [ { "cargoHandoverPrice": 0.00, "sizeCode": "S", "sizeNumber": 100 }, { "cargoHandoverPrice": 1.66, "sizeCod

我是java开发新手。我正在学习json解析。我得到了类似这样的json响应

    "sizePrices": [
        {

            "cargoHandoverPrice": 0.00,
            "sizeCode": "S",
            "sizeNumber": 100
        },
        {
            "cargoHandoverPrice": 1.66,
            "sizeCode": "M",
            "sizeNumber": 110

        },   
        {

            "cargoHandoverPrice": 0.00,
            "sizeCode": "L",
            "sizeNumber": 120

        }
        ,   
        {

            "cargoHandoverPrice": 0.00,
            "sizeCode": "XL",
            "sizeNumber": 130

        },   
        {

            "cargoHandoverPrice": 0.00,
            "sizeCode": "XXL",
            "sizeNumber": 140

        },   
        {

            "cargoHandoverPrice": 1.66,
            "sizeCode": "XXXL",
            "sizeNumber": 150

        }
    ]
    [
        {

            "cargoHandoverPrice": 0.00,
            "SizeRange": "S-XXL",

        },
        {
            "cargoHandoverPrice": 1.66,
            "SizeRange": "M-XXXL",


        }
    ]
如果价格相配的话,它会还给我一个尺码 如下

我想把这个Json解析成这样的东西

    "sizePrices": [
        {

            "cargoHandoverPrice": 0.00,
            "sizeCode": "S",
            "sizeNumber": 100
        },
        {
            "cargoHandoverPrice": 1.66,
            "sizeCode": "M",
            "sizeNumber": 110

        },   
        {

            "cargoHandoverPrice": 0.00,
            "sizeCode": "L",
            "sizeNumber": 120

        }
        ,   
        {

            "cargoHandoverPrice": 0.00,
            "sizeCode": "XL",
            "sizeNumber": 130

        },   
        {

            "cargoHandoverPrice": 0.00,
            "sizeCode": "XXL",
            "sizeNumber": 140

        },   
        {

            "cargoHandoverPrice": 1.66,
            "sizeCode": "XXXL",
            "sizeNumber": 150

        }
    ]
    [
        {

            "cargoHandoverPrice": 0.00,
            "SizeRange": "S-XXL",

        },
        {
            "cargoHandoverPrice": 1.66,
            "SizeRange": "M-XXXL",


        }
    ]

我怎样才能做到这一点?我的动机是根据价格对所有尺码进行分组。

您在这里提出了两个问题: 1.如何将JSON解析为Java对象,然后再转换回JSON 2.一旦我有了Java对象中的数据,我如何按价格分组

关于问题1,有几种高质量的JSON解析器可用,例如解析JSON和构造适当的对象非常简单。但是,如果您阅读了教程,尝试使用解析器,然后遇到问题,请返回SO并提出具体问题

关于问题2,有一项建议:

enum Size { S, M, L, XL, XXL, XXL }

class SizePrice {
    private final double price;
    private final Size size;
    private final int number;
}

List<SizePrice> sizePrices = <read from JSON>

Map<Double,List<SizePrice>> sizePricesGroupedByPrice = sizePrices.stream()
    .collect(Collectors.groupingBy(sp -> sp.price));
enum Size{S,M,L,XL,XXL,XXL}
类大小价格{
私人最终双倍价格;
私人最终尺寸;
私人最终整数;
}
列表大小价格=
Map sizePricesGroupedByPrice=sizePrices.stream()
.collect(收集器.groupingBy(sp->sp.price));

Size
enum故意按大小顺序排列,这样您就可以得到最小和最大(按ordinal())的大小来生成范围。

但是我需要使用Jackson来解析这些JSON,我可以用一个示例代码来解析我的JSON并得到o/pyes吗,但任何获取引用的链接,至少我从未使用过。您可以尝试在下面的代码段中解析-
List items=objectMapper.convertValue(objectMapper.readTree(json).get(“sizePrices”),new TypeReference(){}其中Item为SizePrice@sprinterThanks在执行时经常提到,我在下面遇到异常`线程“main”java.lang.NoClassDefFoundError中出现异常:com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector上的com/fasterxml/jackson/annotation/JsonView。我添加了像com.fasterxml.jackson.core jackson databind 2.8.0 Hi@sprinter这样的依赖项,我添加了下面的代码来获取sizeprices列表,我正在获取值我也可以分组。现在我得到了2号的列表,以后我怎么才能得到这些范围呢?