无法将JSON数组反序列化为类org

lg40wkob  于 2022-12-01  发布在  其他
关注(0)|答案(1)|浏览(154)

我想把一个字符串从json转换到我的类的一个对象中。问题是,在类中我使用了一个ArrayList,这就是为什么(我认为)我收到错误消息“无法将JSON数组反序列化到类中”。我到底该如何分离数组并将其转换为ArrayList呢?

@POST
    public Response createMocktail(String m){
        
        MocktailDto mocktail = jsonb.fromJson(m, MocktailDto.class);
        return Response.ok(mocktailManager.createMocktail(mocktail)).build();
        
    }

Json字符串:

[
    {
        "id": 3,
        "name": "Mojito",
        "zutaten": [
            {
                "anzahl": 1,
                "id": 5,
                "name": "Rum"
            },
            {
                "anzahl": 1,
                "id": 6,
                "name": "GingerAle"
            }
        ]
    }
]

jsonObj =新建的JSONObject(m);不起作用,它说构造函数是未定义的,虽然我看到了一些类似的解决方案

6pp0gazn

6pp0gazn1#

1.问题是您的输入字符串是Array(当它以[开头时)
1.有几种可能的解决方案:
第一:

MocktailDto[] data = jsonb.fromJson(m, MocktailDto[].class);
data[0];

第二:

Type listType = new TypeToken<ArrayList<MocktailDto>>(){}.getType();
 
ArrayList<MocktailDto> data = jsonb.fromJson(m, listType);  
data.get(0);

相关问题