Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/26: Рейтинг темы: голосов - 26, средняя оценка - 4.73
 Аватар для zytia
24 / 15 / 10
Регистрация: 11.06.2019
Сообщений: 162

Как преобразовать json строку в массив?

11.06.2021, 22:52. Показов 5085. Ответов 8

Студворк — интернет-сервис помощи студентам
Привет всем. Я пытаюсь преобразовать json строку из файла в массив. Перешел из php, и в php все делается одной строкой
PHP
1
$langs = json_decode($langs, true);
. Но я столько информации облазил в интернете, что так до сих пор и не понял, как в Java получить данные именно с названием индекса и данные в нем, ибо они все уникальные.

json файл представляет собой такой вид и состоит из 4000 строк с уникальными индексами, и каждый указывать не решение проблемы. Вот некоторый фрагмент:
JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
{
"GILDED_BLACKSTONE":"Золочёный чернит",
"NETHER_BRICK_SLAB":"Плита из преисподникового кирпича",
"ANDESITE_SLAB":"Плита из андезита",
"EGG":"Яйцо",
"MUSIC_DISC_STAL":"Пластинка",
"POTTED_WARPED_FUNGUS":"Искажённый гриб в горшке",
"PIGLIN_BRUTE_SPAWN_EGG":"Яйцо призыва свиновоина-чемпиона",
"BIRCH_STAIRS":"Ступеньки из берёзы",
"SPRUCE_SIGN":"Табличка из ели",
"DRAGON_HEAD":"Голова дракона",
"GREEN_DYE":"Зелёный краситель",
"HONEY_BLOCK":"Блок мёда",
"DIAMOND_ORE":"Алмазная руда",
"DEBUG_STICK":"Палочка отладки",
"SPRUCE_FENCE_GATE":"Калитка из ели",
"BLACK_STAINED_GLASS_PANE":"Чёрная стеклянная панель",
"AZURE_BLUET":"Хоустония голубая",
"SLIME_BALL":"Сгусток слизи",
"RABBIT":"Сырая крольчатина"
}
Мне нужно в отдельных переменных получить и название индекса и само значение этого элемента.
Эти данные мне нужно будет перебрать в будущем с помощью цикла.
Должно получиться что-то в этом роде:
Java
1
2
3
4
for(здесь перебор элементов){
System.out.print(здесь название индекса);
System.out.print(здесь само значение элемента под этим индексом);
}
Помогите новичку, в этой Java слишком сложно представлены такие действия)))
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.06.2021, 22:52
Ответы с готовыми решениями:

Как преобразовать объект в JSON строку?
Подскажите плиз Как преобразовать объект item в JSON строку? class demo { public int age; public string name; ...

Как преобразовать JSON в массив?
По API в ответ получаю {"as":"AS21017 35, Revolutsii prosp.","city":"Voronezh", ... ,"zip":"394000"} Как преобразовать в массив, может...

Как преобразовать данные из JSON в обычный массив
Всем привет! Есть данные в формате JSON: {'time': 1618977514201, 'price': '0.31350000', 'quantity': '127.00000000'} нужно...

8
Модератор
Эксперт Java
 Аватар для alecss131
2856 / 1363 / 406
Регистрация: 11.08.2017
Сообщений: 4,351
Записей в блоге: 2
11.06.2021, 23:21
Лучший ответ Сообщение было отмечено zytia как решение

Решение

Вот например из файла чтение, можно из строки из адреса и тд
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import com.fasterxml.jackson.databind.json.JsonMapper;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
 
public class Test {
    public static void main(String[] args) throws IOException {
        new Test().run();
    }
 
    private void run() throws IOException {
        JsonMapper jsonMapper = new JsonMapper();
        Map<String, String> map = jsonMapper.readValue(new File("test.json"), HashMap.class);
        for (Map.Entry<String, String> entry : map.entrySet()) {
            System.out.print(entry.getKey() + " - ");
            System.out.print(entry.getValue() + "\n");
        }
    }
}
Вывод
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
BIRCH_STAIRS - Ступеньки из берёзы
EGG - Яйцо
PIGLIN_BRUTE_SPAWN_EGG - Яйцо призыва свиновоина-чемпиона
ANDESITE_SLAB - Плита из андезита
AZURE_BLUET - Хоустония голубая
DEBUG_STICK - Палочка отладки
NETHER_BRICK_SLAB - Плита из преисподникового кирпича
POTTED_WARPED_FUNGUS - Искажённый гриб в горшке
GREEN_DYE - Зелёный краситель
DIAMOND_ORE - Алмазная руда
SPRUCE_FENCE_GATE - Калитка из ели
GILDED_BLACKSTONE - Золочёный чернит
SPRUCE_SIGN - Табличка из ели
DRAGON_HEAD - Голова дракона
SLIME_BALL - Сгусток слизи
HONEY_BLOCK - Блок мёда
RABBIT - Сырая крольчатина
MUSIC_DISC_STAL - Пластинка
BLACK_STAINED_GLASS_PANE - Чёрная стеклянная панель
1
 Аватар для zytia
24 / 15 / 10
Регистрация: 11.06.2019
Сообщений: 162
12.06.2021, 01:46  [ТС]
alecss131, спасибо, я сейчас изучу написанный Вами код и протестирую.

Добавлено через 2 часа 22 минуты
alecss131, я не очень разбираюсь в java и у меня появилась ошибка. В Maven проекте у меня будто не находит этот класс.
Java
1
import com.fasterxml.jackson.databind.json.JsonMapper;
Но в зависимости я его добавил.
XML
1
2
3
4
5
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.12.3</version>
        </dependency>
.
Появляется такая вот ошибка:
Code
1
java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/json/JsonMapper
0
Модератор
Эксперт Java
 Аватар для alecss131
2856 / 1363 / 406
Регистрация: 11.08.2017
Сообщений: 4,351
Записей в блоге: 2
12.06.2021, 10:54
Цитата Сообщение от zytia Посмотреть сообщение
Появляется такая вот ошибка
Это при компиляции или запуске? Если при компиляции то не знаю чем помочь, а при запуске то надо добавить библиотеку либо в classpath либо создать так называемый fat jar
0
 Аватар для zytia
24 / 15 / 10
Регистрация: 11.06.2019
Сообщений: 162
12.06.2021, 13:12  [ТС]
alecss131, ошибка при запуске, попытаюсь разобраться, как эту библиотеку в classpath добавить.
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
12.06.2021, 13:34
Цитата Сообщение от zytia Посмотреть сообщение
ошибка при запуске, попытаюсь разобраться, как эту библиотеку в classpath добавить.
Оу, ну тут либо собирать "толстый" jar'ник и класть в classpath (jar'ник), либо Run a Java Main Method in Maven.

Добавлено через 2 минуты
zytia, а чем запуск из Идеи не устроил?
0
 Аватар для zytia
24 / 15 / 10
Регистрация: 11.06.2019
Сообщений: 162
16.06.2021, 13:45  [ТС]
Arsegg, это плагин к серверу, который работает на игровом api, поэтому запуск необходимо проводить на самом сервере. Я в итоге так и не смог разобраться с этими библиотеками и решил сделать на php за 2 минуты. Зря вечер только потратил.
0
Модератор
Эксперт Java
 Аватар для alecss131
2856 / 1363 / 406
Регистрация: 11.08.2017
Сообщений: 4,351
Записей в блоге: 2
16.06.2021, 14:30
Лучший ответ Сообщение было отмечено zytia как решение

Решение

Цитата Сообщение от zytia Посмотреть сообщение
плагин к серверу, который работает на игровом api
как же я сразу не понял, судя по названиям это майн)) а если так то там в сервер (как и в игру) встроена библиотека для работы с json, правда другая от гугла gson, можно и с ее помощью тоже самое сделать, только немного иначе

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
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.Map;
 
public class GsonTest {
    public static void main(String[] args) {
        try {
            new GsonTest().run();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
 
    private void run() throws IOException {
        Gson gson = new GsonBuilder().create();
        String str = new String(Files.readAllBytes(Paths.get("test.json")), StandardCharsets.UTF_8);
        Map<String, String> map = gson.fromJson(str, HashMap.class);
        for (Map.Entry<String, String> entry : map.entrySet()) {
            System.out.print(entry.getKey() + " - ");
            System.out.print(entry.getValue() + "\n");
        }
    }
}
2
 Аватар для zytia
24 / 15 / 10
Регистрация: 11.06.2019
Сообщений: 162
16.06.2021, 15:21  [ТС]
alecss131, ахахаха, да, это так)) Спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.06.2021, 15:21
Помогаю со студенческими работами здесь

Как преобразовать массив в JSON для отправки на сервер?
ребят помогите пожалуйста разобраться с json encode нужно перевести массив в json encode для отправки на сервер все статьи что по...

Как преобразовать строку в массив
Помогите пожалуйста. После шифрования получилась строка с цифрами. Например 13342, 1 это отдельное число, так же 33 и 42. Нужно из строки...

Как преобразовать массив в строку?
string str = Console.ReadLine(); string words = str.Split(new char{' ',',', '.', '!', '?'}); ...

Как преобразовать строку в массив?
Вот строка pw := 54321 form1.Edit4.Text := pw+pw+pw+pw+pw Как ее заменить (преобразовать) в массив... Char_String := pw ...

Преобразовать JSON строку в объект типа dynamic
Доброго времени суток уважаемые! Столкнулся с банальной задачей: преобразовать JSON строку в объект типа dynamic. Первым делом,...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru