2011-02-09 5 views
1

Это мой JSON:GSON разбор андроид

{ 
    "Curs": [ 
     { 
      "ID": "AED", 
      "Name": "Dirhamul Emiratelor Arabe", 
      "Curs": "0.8503", 
      "Multiplier": "1", 
      "Data": "2011-02-09" 
     }, 
     { 
      "ID": "AUD", 
      "Name": "Dolarul australian", 
      "Curs": "3.1572", 
      "Multiplier": "1", 
      "Data": "2011-02-09" 
     } 
    ] 
} 

Это мой класс:

public class Curs { 

@SerializedName("ID") 
public String id; 

@SerializedName("Name") 
public String nume; 

@SerializedName("Curs") 
public double crs; 

@SerializedName("Multiplier") 
public int mult; 

@SerializedName("Data") 
public Date data; 

public String getId() { 
    return id; 
} 
public void setId(String id) { 
    this.id = id; 
} 
public String getNume() { 
    return nume; 
} 
public void setNume(String nume) { 
    this.nume= nume; 
} 
public void setCrs(double crs) { 
    this.crs=crs; 
} 
public double getCrs(){ 
    return crs; 
} 
public void setMult(int mult) { 
    this.mult=mult; 
} 
public int getMult(){ 
    return mult; 
} 
public void setData(Date data) { 
    this.data=data; 
} 
public Date getData(){ 
    return data; 
} 

}

И это класс, который содержит мой список:

public class CursList { 

public static List<Curs> listaCurs; 

public void setCursList(List <Curs> listaCurs) { 
    this.listaCurs = listaCurs; 
} 

public List<Curs> getCursList() { 
    return listaCurs; 
} 

}

Я разбор, как это:

Gson gson=new Gson(); 

    CursList listaCurs=gson.fromJson(Jsonresult,CursList.class); 

Когда я получить доступ к списку я получаю нуль pointer.What я делаю неправильно?

+0

Где находится NPE? –

+0

ошибка возникает, когда я пытаюсь получить доступ к списку следующим образом: Список listacurs = listaCurs.listaCurs; \t \t \t \t Итератор iterator = null; \t \t iterator = listacurs.iterator(); \t \t в то время как (iterator.hasNext()) \t \t { \t \t} –

+0

найти, если listacurs равно нулю (или, если это итератор, который вы получили от него) –

ответ

1

Gson пытается помещать список в поле под названием «Curs», но внутри класса CursList нет такого поля. Вы должны добавить аннотацию в CursList как:

public class CursList { 
    @SerializedName("Curs") 
    public static List<Curs> listaCurs; 

    ... 
} 
+0

я сделал это, но я не фиксированная моя ошибка. Я надеялся, что это может быть проблемой. –

0
Gson gson=new Gson(); 
Type cursType = new TypeToken<CursList>() { }.getType(); 
CursList listaCurs=gson.fromJson(Jsonresult,cursType); 
+0

Нет. Это не трюк. У вас есть другая идея. Возможно, я не обращаюсь к нему хорошо. Мне это нравится: Список listacurs = listaCurs.listaCurs; \t \t \t \t Итератор iterator = null; \t \t iterator = listacurs.iterator(); \t \t в то время как (iterator.hasNext()) \t \t { \t \t –

+0

} Еще одна идея: добавить пустой конструктор для класса CursList и инициализации там новый список. public CursList() {listaCurs = новый Список ();} – Pasha

3

Найдена глупая проблема. Json не принимает формат даты. Это была проблема. Спасибо всем за помощь.

+0

Ах, не видел этого. Эта ссылка может помочь при написании настраиваемого анализатора, если вам это нужно: http://sites.google.com/site/gson/gson-type-adapters-for-common-classes-1 –

+0

При использовании GsonBuilder вы можете указать формат даты для использования с одним из методов setDateFormat(). –