Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
 Аватар для StepFather322
365 / 252 / 113
Регистрация: 07.10.2017
Сообщений: 1,330

Из Json в Java class

19.05.2020, 15:01. Показов 791. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
День добрый. Есть у меня вот такой json с погодой:
JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
{
  "coord": {
    "lon": -0.13,
    "lat": 51.51
  },
  "weather": [
    {
      "id": 300,
      "main": "Drizzle",
      "description": "light intensity drizzle",
      "icon": "09d"
    }
  ],
  "base": "stations",
  "main": {
    "temp": 280.32,
    "pressure": 1012,
    "humidity": 81,
    "temp_min": 279.15,
    "temp_max": 281.15
  },
  "visibility": 10000,
  "wind": {
    "speed": 4.1,
    "deg": 80
  },
  "clouds": {
    "all": 90
  },
  "dt": 1485789600,
  "sys": {
    "type": 1,
    "id": 5091,
    "message": 0.0103,
    "country": "GB",
    "sunrise": 1485762037,
    "sunset": 1485794875
  },
  "id": 2643743,
  "name": "London",
  "cod": 200
}
Мне не нужны все данные отсюда, мне нужно к примеру 5: темпереаторуа, давление, ветренность, описание, влажность.
Я знаю что можно просто руками извлекать данные обращаясь по имени "поля" в файле.
Еще через 3 колена, я какой-то библиотекой jsonschema2pojo смог сгенерировать классы исходя из данныех в этом json файле.
У меня их получилось 7 штук. И потом они пректасно заполняются Gson'ом в 3 строки. Но мне не нужно так много данных и столько классов.
Вообщем сам вопрос: могу я создать какой то вот такой примитивный класс:
Java
1
2
3
4
5
6
7
8
public class Weather {
    private double temp;
    private int windSpeed;
    private int pressure;
    private String description;
    private int humidity;
    
}
Поставить над полями какие то аннотации и 3 строчками
Java
1
2
3
Gson gson = new GsonBuilder().create();
        Weather weather = gson.fromJson(Main.test(), Weather.class);
        System.out.println(weather);
Заполнить его только тем что мне нужно? Вопрос по большей части о возможности такого действия. То что руками это можно наковырять я знаю, но не очень хорошо это выглядит.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.05.2020, 15:01
Ответы с готовыми решениями:

bad class file: C:Program FilesJavajre1.5.0_02lib t.jar(java/lang/Object.class) class file has wrong version 49.0, should be 48.0
написал тестовый td_jsp.jsp фаил ->> <html> <head><title>JSP test</title></head> <body> <p>JSP test</p> </body> ...

Java, JSON и JSON Simple. Непонятка с созданием объекта JSON на сервере для отправки на фронт
Здравствуйте. Разрабатываю интернет-магазин на Java. Мне нужно на фронте получить список товаров из базы данных для отображения на...

Java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation
Здравствуйте. При динамической загрузке кода столкнулся с такой ошибкой: E/AndroidRuntime(27808): Caused by:...

5
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
19.05.2020, 15:18
а что мешает попробовать?
0
 Аватар для StepFather322
365 / 252 / 113
Регистрация: 07.10.2017
Сообщений: 1,330
19.05.2020, 15:39  [ТС]
Я не могу найти нормальную инфу по этим аннотациям. Во всех "недогайдах" показывают примитивные примеры. Ничего похоже не нашел, поэтому спрашиваю существует ли такая возможность вообще.

Добавлено через 2 минуты
К тому же temp лежит не просто так, а внутри main. И мне кажется что достать сразу temp ничего не делая с main библеотека не сможет.
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,779
19.05.2020, 15:47
Цитата Сообщение от StepFather322 Посмотреть сообщение
Я не могу найти нормальную инфу по этим аннотациям.
По каким аннотациям?
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
19.05.2020, 16:13
напиши нормальную модель, из нее делай такие, которые тебе нужны
0
 Аватар для StepFather322
365 / 252 / 113
Регистрация: 07.10.2017
Сообщений: 1,330
19.05.2020, 16:57  [ТС]
Цитата Сообщение от korvin_ Посмотреть сообщение
По каким аннотациям?
Может я и не в ту степь думаю. Вся суть вопроса в том, могу ли я, неважно какой библиотекой, достать из json только опредленные данные и положить их в поля класса что я привел выше. Не руками. Тоесть мне нужно ведь как то показать ему что вот в поле temp нужно положить данные из main: temp. Я думаю для этого есть какие то аннотации. Или же я опять все усложняю и легче уже руками просто обращаясь к полям в файле доставать данные?

Добавлено через 17 минут
Вообщем вот:
Java
1
2
3
4
5
public class Weather {
    @SerializedName("temp")
    private double temp;
    @SerializedName("description")
    private String description;
Есть такая аннотация, которая указывает из какого поля нужно взять данные и положить в аннотированное.
Но указав просто "description" он будет искать просто поле с таким названием. А его ведь нет, он лежит внутри другого поля "weather". Не могу допереть как показать ему что нужно для начала зайти в "weather", а потом уже искать поле description"

Добавлено через 2 минуты
weather это к тому же не просто поле как main, это еще и массив=_=

Добавлено через 22 минуты
Вообщем вроде добился того чего хотел, вот:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package com.eternal;
 
import com.google.gson.annotations.SerializedName;
 
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
public class Weather {
    @SerializedName("weather")
    private List<Map<String, String>> list = new ArrayList<>();
    @SerializedName("main")
    private Map<String, String> description = new HashMap<>();
 
    public List<Map<String, String>> getList() {
        return list;
    }
 
    public void setList(List<Map<String, String>> list) {
        this.list = list;
    }
 
    public Map<String, String> getDescription() {
        return description;
    }
 
    public void setDescription(Map<String, String> description) {
        this.description = description;
    }
 
    @Override
    public String toString() {
        return "Weather{" +
                "list=" + list +
                ", description=" + description +
                '}';
    }
}
Java
1
2
3
4
5
6
7
public static void main(String[] args) throws IOException {
        Gson gson = new GsonBuilder().create();
        Weather weather = gson.fromJson(Main.test(), Weather.class);
        System.out.println(weather);
        System.out.println(weather.getList().get(0).get("description"));
        System.out.println(weather.getDescription().get("temp"));
    }
Code
1
2
3
4
Вывод:
Weather{list=[{id=300, main=Drizzle, description=light intensity drizzle, icon=09d}], description={temp=280.32, pressure=1012, humidity=81, temp_min=279.15, temp_max=281.15}}
light intensity drizzle
280.32
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.05.2020, 16:57
Помогаю со студенческими работами здесь

Can't see new fields in java class from scala class in Eclipse
Привет. Есть Java класс, есть Scala класс. В Java-класс добавляю новую константу, пытаюсь к ней обратиться из scala-класса. Проект...

Парсинг JSON в JSON Linked Data с использованием Hydra Java
Есть веб страница, на которой пользователь заполняет поля, жмет на кнопку и затем данные отправляются на сервер. На сервере работает...

Ошибка - Errororg.json.JSONExceprion: Value bd.json of type java.lang.String cannot be converted to JSONObject
Здравствуйте! Есть база данных bd.json, которая находится в проекте в папке assets. Вот содержимое базы данных; { &quot;name&quot;:...

Ошибка: cannot find symbol symbol: class toString location: class java.util.Date
import java.util.Date; import java.lang.String; import java.io.*; public class Sword { public static void main(String args)...

'fr.java': Ошибка #: 300 : method getObject(int) not found in class java.lang.String строка 33, символ 18
'fr.java': Ошибка #: 300 : method getObject(int) not found in class java.lang.String строка 33, символ 18


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru