Как скопировать содержимое универсального объекта для конкретного объекта - PullRequest
0 голосов
/ 03 июля 2019

Мне нужна поддержка в этом коде, у меня есть метод, который я получаю универсальный объект и строку, поэтому в соответствии со строкой, которую я получаю, я хочу скопировать содержимое универсального объекта в конкретный объект, одно наблюдение, что объект TypeAне имеют те же поля, что TypeB.например:

Заранее спасибо

@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
@Authorize("Receiving")
@Path("/Print")

public Response LabelPrint(@Context HttpServletRequest request, 
                            final Object generic
                           ,@QueryParam("Type") final String Type) {

    if ( Typex.compareTo("X")) {

        TypeA typeA = generic;
        ...

    } else {
        TypeB typeB = generic;
        ...
    }

    return buildResponse(OK);   

}

Я попробовал это, но безуспешно

    if (labelType.compareTo("X")) {             
        TypeA x = new TypeA();
        BeanUtils.copyProperties(x, generic);
    }
    else {
        TypeA y = new TypeA();
        BeanUtils.copyProperties(y, generic);
    }

1 Ответ

0 голосов
/ 04 июля 2019

Мне удалось это сделать, получив как String

public Response LabelPrint(@Context HttpServletRequest request, 
                            final String objetcForImpression
                           ,@QueryParam("Type") final String Type) {

    if ( Typex.compareTo("X")) {

            try {
                ObjectMapper objetcForImpression  = new ObjectMapper(); 
                TypeA typeA = objetcForImpression.readValue(objetcForImpression, TypeA.class);                  
            } catch (JsonParseException e) {                
                e.printStackTrace();
            } catch (JsonMappingException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }  
    }

        ...

    } else {
            try {
                ObjectMapper objetcForImpression  = new ObjectMapper(); 
                TypeB typeB = objetcForImpression.readValue(objetcForImpression, TypeA.class);                  
            } catch (JsonParseException e) {                
                e.printStackTrace();
            } catch (JsonMappingException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } 
    }

    return buildResponse(OK);   

}

...