У меня возникла проблема с преобразованием строки JSON в массив объектов с использованием Gson. Я пробовал все, что мог найти, и ничего не помогло. Мой код:Преобразование строки JSON в массив объектов с использованием Gson
public static ProizvodiViewModel GetProizvode(String tip) {
String strJson = HttpManager.simpleResponseGet("http://192.168.0.15:21951/api/Proizvodi/SearchProizvodiByVrsta", tip);
Gson gson = new Gson();
ProizvodiViewModel x = new ProizvodiViewModel();
x.Proizvodi = new ProizvodViewModel[]{};//tried also with this line commented
try {
//1st attempt
//x.Proizvodi = gson.fromJson(strJson, ProizvodViewModel[].class);
//2nd
//Type type = new TypeToken<List<ProizvodViewModel[]>>() {}.getType();
//x.Proizvodi = gson.fromJson(strJson, type);
//3rd and so forth (cause many of answers here on SO had almost same idea)
Type collectionType = new TypeToken<Collection<ProizvodViewModel>>() {}.getType();
Collection<ProizvodViewModel> enums = gson.fromJson(strJson, collectionType);
} catch (Exception e) {
System.out.println("ERROR IN GSON");
System.out.println(e.getMessage());
}
return x;
}
Я поставил попробовать поймать причину приложение сломается иначе, и я не смог прочитать Println годов.
И мои занятия:
public class ProizvodViewModel {
public int Id ;
public boolean IsDeleted ;
public String Naziv ;
public float Cijena ;
public byte[] Slika ;
public byte[] SlikaThumb ;
public String Status ;
public int ProizvodDetaljiId ;
public int VrstaId ;
}
public class ProizvodiViewModel
{
public ProizvodViewModel[] Proizvodi;
}
получить данные в формате JSON, как вы можете увидеть здесь: http://pastebin.com/6C7936Uq Я использую Android Studio 1.1.0 и апи 16.
Edit: Post решена проблема. Я получил строку api return json, содержащую 2 свойства байтовых массивов, которые были преобразованы (я не знаю, как) в строку base64, и я пытался сопоставить их в массив байтов, что вызывало ошибку. Я написал свой api в asp. net application, поэтому, если кто-то заботится о том, чтобы объяснить, почему это произошло, сделайте это.
В это время нужно, Genymotion занимает 2 долгих ответа. Я буду проверять код как можно скорее и дать обратную связь. Большое спасибо за ответ. – Kadaj
К сожалению, он не работает. Я получаю эту ошибку: java.lang.IllegalStateException: ожидается BEGIN_ARRAY, но был STRING в строке 1 столбец 72 путь $ [0] .Slika Может быть, потому что у меня есть массив байтов, и он думает, что это строка? Это на самом деле изображение (в байтах), я не знаю, как java анализирует их, у меня есть только exp с C# stuff. Это необходимо только для одной простой задачи в моем колледже -.- '' – Kadaj
Проверьте это [ссылка] (http://stackoverflow.com/a/28418787/6723193). JSON должен быть массивом. Попробуйте поделиться своим JSON. – Amg91