Как парсить вот такой json при помощи GSON

253
25 октября 2017, 03:32

Имеется вот такой json

  {
    "status": "OK",
    "results": [
        {
            "mac": "00:1A:79:08:6E:B6",
            "ip": "*.*.*.*",
            "ls": "001",
            "version": "ImageDescription: 123123",
            "status": 1,
            "additional_services_on": "1",
            "last_active": "2017-05-15 11:29:10",
            "login": "freeman",
            "account_balance": "",
            "online": "0"
        },
        {
            "mac": "00:1a:79:07:d4:37",
            "ip": "*.*.*.*",
            "ls": "21541307",
            "version": "ImageDescription: 123123",
            "status": 1,
            "additional_services_on": "1",
            "last_active": "2017-10-20 09:50:24",
            "login": "stb21541307",
            "account_balance": "",
            "online": "0"
        },      
        {
            "mac": "00:1A:79:13:B0:3E",
            "ip": "*.*.*.*",
            "ls": "20811718",
            "version": "ImageDescription:123123123",
            "status": 1,
            "additional_services_on": "1",
            "last_active": "2017-10-20 11:17:40",
            "login": "stb20811718",
            "account_balance": "",
            "online": "0"
        }
    ]
}

Пытаюсь вот так, но что то не получается

if (c.getResponseCode() == HttpURLConnection.HTTP_OK) {
            JsonParser parser = new JsonParser();
            JsonObject items = (JsonObject) parser.parse(response.toString());
             JSONArray jsonarray =  new JSONArray(items.getAsJsonArray("results"));
            for (int i = 0; i < jsonarray.length(); i++) {
                JSONObject jsonobject = jsonarray.getJSONObject(i);
                String mac = jsonobject.getString("mac");
                String ip = jsonobject.getString("ip");
                int ls = jsonobject.getInt("ls");
                String version =jsonobject.getString("version");
                int status = jsonobject.getInt("status");
                String additional_services_on=jsonobject.getString("additional_services_on");
                Date last_activ=new SimpleDateFormat(("YYYY-MM-DD hh:mm:ss")).parse(jsonobject.getString("last_activ"));
                String login =jsonobject.getString("login");
                String account_balance =jsonobject.getString("account_balance");
                int online =jsonobject.getInt("online");
            }
            }
Answer 1

То что вы пытаетесь написать никакого отношения к GSon не имеет. GSon работает по другому. Вам надо:

1) Перевести ваш Json в иерархию Java классов

2) Полученную иерархию засунуть в Gson таким вот макаром:

Gson gson = new Gson();    
//класс MyClass - ваш корневой класс иерархии Json
MyClass myClassObject=gson.fromJson(jsonString, MyClass.class);

Чтобы сгенерировать классы из Json строки можно воспользоваться онлайн генераторами, например вот таким. Я потратил ровно 5 секунд на генерацию такой иерархии:

public class Result
{
  private String mac;
  public String getMac() { return this.mac; }
  public void setMac(String mac) { this.mac = mac; }
  private String ip;
  public String getIp() { return this.ip; }
  public void setIp(String ip) { this.ip = ip; }
  private String ls;
  public String getLs() { return this.ls; }
  public void setLs(String ls) { this.ls = ls; }
  private String version;
  public String getVersion() { return this.version; }
  public void setVersion(String version) { this.version = version; }
  private int status;
  public int getStatus() { return this.status; }
  public void setStatus(int status) { this.status = status; }
  private String additional_services_on;
  public String getAdditionalServicesOn() { return this.additional_services_on; }
  public void setAdditionalServicesOn(String additional_services_on) { this.additional_services_on = additional_services_on; }
  private String last_active;
  public String getLastActive() { return this.last_active; }
  public void setLastActive(String last_active) { this.last_active = last_active; }
  private String login;
  public String getLogin() { return this.login; }
  public void setLogin(String login) { this.login = login; }
  private String account_balance;
  public String getAccountBalance() { return this.account_balance; }
  public void setAccountBalance(String account_balance) { this.account_balance = account_balance; }
  private String online;
  public String getOnline() { return this.online; }
  public void setOnline(String online) { this.online = online; }
}
public class MyClass
{
  private String status;
  public String getStatus() { return this.status; }
  public void setStatus(String status) { this.status = status; }
  private ArrayList<Result> results;
  public ArrayList<Result> getResults() { return this.results; }
  public void setResults(ArrayList<Result> results) { this.results = results; }
}
READ ALSO
Реализация перемещения маркера

Реализация перемещения маркера

Всем привет! Как можно переместить маркер на карте Google Maps с анимацией?

249
Вызов метода из одного RecyclerView.Adapter в другом RecyclerView.Adapter

Вызов метода из одного RecyclerView.Adapter в другом RecyclerView.Adapter

У меня есть два RecyclerViewВ первом (CategoriesRV) отображаются категории, а в другом (ElementsRV) элементы этих категорий

245
Как распарсить json файл в android?

Как распарсить json файл в android?

Пример кода из файла(сначала идет описание города, потом идет описание станций в этом городе):

281