2013-10-05 3 views
1

Раньше я использовал Gson и все работало нормально, но это слишком медленно.Проблема синтаксического разбора json с jackson 1.9

Вот Json:

"{"Info":[{"par1":3456,"par2":4500,"par3":0,"items":{"parx":2354,"pary":456456,"parz":"worker"}} 
    ,{"par1":34456,"par2":4300,"par3":1,"items":{"parx":5677,"pary":78456,"parz":"member"}}, 
    ],"par4":343434,"duplicateItemIdList":null,"errorState":null}" 

Теперь я попытался Джексон:

фрагменты кода:

ObjectMapper mapper = new ObjectMapper(); 
Passes mj = mapper.readValue(str, Passes.class); 

public class Passes { 
    public ArrayList<Info> info; 

.... } 

@JsonIgnoreProperties(ignoreUnknown = true)  
class Info { 

     public String par1 = ""; 
     public String par2 = ""; 
     public String par3 = ""; 
     public String par4 = ""; 

     Items items = new Items();  
} 

class Items{   
     public String parx = ""; 
     public String pary = ""; 
     public String parz = ""; 
} 

Проблема заключается в том, что не заполняет класс items. parx, pary, parz и т. д.

items - единственная проблема. остальное отлично работает.

моя структура должна быть права, потому что в Gson мне нужны только две линии, и она отлично работает.

, так что я думаю, что я должен добавить что-то такое, что джексон признает

+0

Его хорошая история, но где ваш Json Строка? пожалуйста, добавьте его –

+0

. Я могу это сделать, но это не должно иметь значения, потому что он работает с ошибками с gson – user2848916

+0

. Как мы можем вам помочь, если мы не увидим, что вы пытаетесь преобразовать. Хорошо, что Gson работает хорошо, но самый простой способ создать новый проект в Eclipse и сделать то, что вы сделали, чтобы найти настоящую проблему. Потому что код, который вы опубликовали, кажется хорошим –

ответ

1

Убедитесь, что у вас есть:

  • geters/сеттеры для каждого параметра
  • пустой (или любой) Подрядчик

Пропуски

@JsonIgnoreProperties(ignoreUnknown = true) 
public class Passes { 
    private List<Info> info; 

    public Passes() { 
     // TODO Auto-generated constructor stub 
    } 

    public List<Info> getInfo() { 
     return info; 
    } 

    public void setInfo(List<Info> info) { 
     this.info = info; 
    } 
} 

Информация

@JsonIgnoreProperties(ignoreUnknown = true)  
public class Info { 

    private int par1; 
    private int par2; 
    private int par3; 
    private int par4; 

    //private Items items;  

    public Info() { 
     // TODO Auto-generated constructor stub 
    } 

    public int getPar1() { 
     return par1; 
    } 

    public void setPar1(int par1) { 
     this.par1 = par1; 
    } 

    public int getPar2() { 
     return par2; 
    } 

    public void setPar2(int par2) { 
     this.par2 = par2; 
    } 

    public int getPar3() { 
     return par3; 
    } 

    public void setPar3(int par3) { 
     this.par3 = par3; 
    } 

    public int getPar4() { 
     return par4; 
    } 

    public void setPar4(int par4) { 
     this.par4 = par4; 
    } 
} 

Элементы

public class Items{   
    private int parx; 
    private int pary; 
    private String parz; 

    public Items() { 
     // TODO Auto-generated constructor stub 
    } 

    public int getParx() { 
     return parx; 
    } 

    public void setParx(int parx) { 
     this.parx = parx; 
    } 

    public int getPary() { 
     return pary; 
    } 

    public void setPary(int pary) { 
     this.pary = pary; 
    } 

    public String getParz() { 
     return parz; 
    } 

    public void setParz(String parz) { 
     this.parz = parz; 
    } 
} 

Он должен работать

В качестве примечания:

Gson использует LinkedLIst когда JacksonArrayList поэтому из кода Gson не конвертировать Passes класс

+0

спасибо. У меня уже были подрядчики. это был всего лишь фрагмент. и геттер и сеттеры не решили проблему. – user2848916

+0

Примечание: «Пропускает» класс не подводит. просто «предметы» пустые – user2848916

+0

json вы опубликовали хорошо, и я получаю все данные (предметы тоже), поэтому ваша проблема в «оригинале» Json –

Смежные вопросы