sinful15
sinful15

Reputation: 41

Converting Map<String, Object> to List<MyModeledClass>

I am calling a function that returns a Map. I would like to convert Object to a model.

public List<Item> getProducts(String itemNumber) throws Exception {
    MapSqlParameterSource parameters = new MapSqlParameterSource();

    params.addValue("flagA", "D");
    params.addValue("descA", itemNumber);

    Map<String, Object> results = execute(programName, parameters );

    List<Item> list = (List<Item>) results.get("#result");
    return list;
}

Here is a sample of what it is returning:

[
    {
        "ITEM#": "123456",
        "ITEM_NAME": "ITEM NAME"
    }
]

Here is my model (using lombok):

@Data
@Wither
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class Item{
    String itemNumber;

    String itemName;
}

Doing this produces an error;

List<Item> list = (List<Item>) results.get("#result");
System.out.println(list.get(0).getItemNumber());

Upvotes: 0

Views: 381

Answers (1)

Paulo Martinelli
Paulo Martinelli

Reputation: 36

Change the line:

List<Item> list = (List<Item>) results.get("#result");

to

List<Item> list = new ArrayList<Item>(results.values());

A new List is created using the values of the Map, the keys are discarded.

Upvotes: 1

Related Questions