简体   繁体   English

如何在Java bean和Jackson Json中创建VarArgs?

[英]How to create VarArgs in java bean and Jackson Json?

I am receiving a json from my client side as 我从客户端收到一个json作为

{
"name":"name",
"type":"type",
"value": "one"
}

or 要么

{
"name":"name",
"type":"type",
"value": [
"one",
"two"
]
}

I want to create a JAVA object which should accept both the payload. 我想创建一个应该同时接受两个有效负载的JAVA对象。

I worked on varargs in Java buut i never tried varargs in Java model. 我曾在Java buut中研究varargs,但从未尝试过在Java模型中尝试过varargs。 Trying to create a java bean like this, 试图创建一个像这样的java bean,

private String name;
private String type;
private String... value;

But getting compilation error as "Unexpected Token". 但是获取编译错误为“意外令牌”。

Then changed my POJO to like this, 然后将我的POJO更改为这样,

private String name;
private String type;
private String[] value;

But Jackson throwing an exception Can not deserialize instance of java.lang.String[] out of VALUE_STRING token 但是Jackson抛出异常无法从VALUE_STRING令牌中反序列化java.lang.String []实例

Even i am ready to change my Java bean as per my json structure. 甚至我也准备按照json结构更改Java bean。

Any help would be appreciated. 任何帮助,将不胜感激。

Could you try it? 你可以试试看吗?

class Data {
    private String name;
    private String type;
    private String[] value;

    //gettes and setters
}


public class Example {
    public static void main(String[] args) throws IOException {
        final ObjectMapper mapper =
                new ObjectMapper().enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY);

        String json1 = "{\"name\":\"name\",\"type\":\"type\",\"value\":\"one\"}";
        String json2 = "{\"name\":\"name\",\"type\":\"type\",\"value\":[\"one\",\"two\"]}";

        Data data1 = mapper.readValue(json1, Data.class);
        Data data2 = mapper.readValue(json2, Data.class);
        System.out.println(data1);
        System.out.println(data2);
    }
}

The property DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY must help. 属性DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY必须有所帮助。

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

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