2016-02-24 2 views
1

Я попытался преобразовать строку json из WS в мою собственную Java POJO, но я не смог найти способ.Как преобразовать строку json в Java POJO

Вот ответ, который я получил от WS:

{ 
    "result": ["", { 
     "dataset": [{ 
      "PLCode": "027", 
      "PLType": "P", 
      "PList": "BOSCH", 
      "PartNumber": "0986452041", 
      "Description": "FILTRO OLIO", 
      "F": "", 
      "DC": "F46", 
      "Price": "12,2", 
      "Picture": "", 
      "N": "", 
      "O": "027" 
     }, { 
      "PLCode": "484", 
      "PLType": "P", 
      "PList": "BRC", 
      "PartNumber": "BRF1101", 
      "Description": "FILTRO OLIO AVVITABILE", 
      "F": "", 
      "DC": " ", 
      "Price": "9,11", 
      "Picture": "", 
      "N": "", 
      "O": "484" 
     }] 
    }] 
} 

Я попытался Differents пути, например:

public class Test { 

    private Result result; 

    public Result getResult() { 
     return result; 
    } 

    public void setResult(Result result) { 
     this.result = result; 
    } 
} 

public class Result { 

    private String errorDescription; 

    private List<Dataset> dataset; 

    public String getErrorDescription() { 
     return errorDescription; 
    } 

    public void setErrorDescription(String errorDescription) { 
     this.errorDescription = errorDescription; 
    } 

    public List<Dataset> getDataset() { 
     return dataset; 
    } 

    public void setDataset(List<Dataset> dataset) { 
     this.dataset = dataset; 
    } 
} 

И когда я пытаюсь разобрать делать: тест тест = новый тест(); test = объектMapper.readValue (сообщение, Test.class);

я получил следующую ошибку:

ERROR - RequestKromedaService.getKromedaAMReferences(142) : com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of com.beans.Result out of START_ARRAY token 

Не могли бы вы мне помочь?

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

ответ

4

Ваш Test объект содержит один Result объект, однако JSON имеет result поле, содержащее массив объектов. Элемент массива - это строка, за которой следует объект Result.

0

В JSON

ниже, представляет объект

{ 
    color: "red", 
    value: "#f00" 
} 

ниже, представляет массив

[ 
    { 
     color: "red", 
     value: "#f00" 
    }, 
    { 
     color: "green", 
     value: "#0f0" 
    } 
] 

Судя по этой записи

результат должен Ь e массив/список в классе испытаний