mal1kov
@mal1kov
Притворись дураком 5 минут, чем быть им всю жизнь.

GSON — Как объявить переменные для хранения названий из сложного JSON?

Есть такой JSON:

[
  {
    "id": 1,
    "name": "Leanne Graham",
    "username": "Bret",
    "email": "Sincere@april.biz",
    "address": {
      "street": "Kulas Light",
      "suite": "Apt. 556",
      "city": "Gwenborough",
      "zipcode": "92998-3874",
      "geo": {
        "lat": "-37.3159",
        "lng": "81.1496"
      }
    },
    "phone": "1-770-736-8031 x56442",
    "website": "hildegard.org",
    "company": {
      "name": "Romaguera-Crona",
      "catchPhrase": "Multi-layered client-server neural-net",
      "bs": "harness real-time e-markets"
    }
  },
  {
    "id": 2,
    "name": "Ervin Howell",
    "username": "Antonette",
    "email": "Shanna@melissa.tv",
    "address": {
      "street": "Victor Plains",
      "suite": "Suite 879",
      "city": "Wisokyburgh",
      "zipcode": "90566-7771",
      "geo": {
        "lat": "-43.9509",
        "lng": "-34.4618"
      }
    },
    "phone": "010-692-6593 x09125",
    "website": "anastasia.net",
    "company": {
      "name": "Deckow-Crist",
      "catchPhrase": "Proactive didactic contingency",
      "bs": "synergize scalable supply-chains"
    }
  },
]


Работаю с библиотекой GSON. В программе нужно найти геоданные по почте.
Как объявить переменные в классе GetGeo для дальнейшей работой с ней.
А именно я не понимаю, как объявить ключ "address" и "geo" внутри него.
GetGeo

public class GetGeo {
    private int id;
    private String name;
    private String username;
    private String email;
    private Object address;
}


P.S. В задании указано использовать именно GSON.
  • Вопрос задан
  • 156 просмотров
Решения вопроса 1
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
Есть такой сайт - www.jsonschema2pojo.org
На сайте вы также найдете maven плагин для быстрой конвертации
Результат

-----------------------------------com.example.Address.java-----------------------------------

package com.example;

import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

public class Address {

@SerializedName("street")
@Expose
public String street;
@SerializedName("suite")
@Expose
public String suite;
@SerializedName("city")
@Expose
public String city;
@SerializedName("zipcode")
@Expose
public String zipcode;
@SerializedName("geo")
@Expose
public Geo geo;

}
-----------------------------------com.example.Company.java-----------------------------------

package com.example;

import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

public class Company {

@SerializedName("name")
@Expose
public String name;
@SerializedName("catchPhrase")
@Expose
public String catchPhrase;
@SerializedName("bs")
@Expose
public String bs;

}
-----------------------------------com.example.Example.java-----------------------------------

package com.example;

import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

public class Example {

@SerializedName("id")
@Expose
public int id;
@SerializedName("name")
@Expose
public String name;
@SerializedName("username")
@Expose
public String username;
@SerializedName("email")
@Expose
public String email;
@SerializedName("address")
@Expose
public Address address;
@SerializedName("phone")
@Expose
public String phone;
@SerializedName("website")
@Expose
public String website;
@SerializedName("company")
@Expose
public Company company;

}
-----------------------------------com.example.Geo.java-----------------------------------

package com.example;

import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

public class Geo {

@SerializedName("lat")
@Expose
public String lat;
@SerializedName("lng")
@Expose
public String lng;

}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Может быть, эта статья поможет: https://habr.com/ru/company/naumen/blog/228279/
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы