5

Как преобразовать jsonString в JSONObject в Java?

12

У меня есть переменная типа String с названием jsonString:

{"phonetype":"N95","cat":"WP"}

Теперь я хочу преобразовать её в объект JSON. Я искал информацию в Google, но не нашёл ожидаемых ответов! Как мне это сделать?

5 ответ(ов)

2

Для тех, кто все еще ищет ответ:

JSONParser parser = new JSONParser();
JSONObject json = (JSONObject) parser.parse(stringToParse);

Этот код использует JSONParser для разбора строки stringToParse, что позволяет получить объект JSONObject. Убедитесь, что у вас подключена библиотека, поддерживающая парсинг JSON, например, json-simple.

0

В Java 7 для работы с JSON вы можете использовать библиотеку javax.json. Вот пример, как можно прочитать JSON-строку и преобразовать её в объект JsonObject. Предположим, что у вас уже есть JSON в виде строки, сохранённой в переменной TEXT.

Вот решение:

import javax.json.Json;
import javax.json.JsonObject;
import java.io.StringReader;

public class JsonExample {
    public static void main(String[] args) {
        String TEXT = "{\"key\":\"value\"}"; // Пример строки JSON

        // Чтение JSON-строки и преобразование в JsonObject
        JsonObject body = Json.createReader(new StringReader(TEXT)).readObject();

        // Выводим значение по ключу
        System.out.println(body.getString("key")); // Вывод: value
    }
}

В этом примере используется StringReader для создания объекта, который читает из строки, и метод Json.createReader() для создания JSON-ридера. После этого вы можете получить доступ к элементам JSON-объекта, используя соответствующие методы, как getString().

Не забудьте добавить зависимости для javax.json в ваш проект, если работаете с Java EE или Java SE, чтобы убедиться, что библиотека доступна.

0

Чтобы преобразовать String в JSONObject, вам нужно просто передать экземпляр String в конструктор JSONObject.

Пример:

JSONObject jsonObj = new JSONObject("ваша строка");
0

Для преобразования строки JSON в объект с использованием библиотеки Jackson и пакета com.fasterxml.jackson.databind, вы можете использовать следующий код. Допустим, ваша JSON-строка выглядит так: jsonString = {"phonetype":"N95","cat":"WP"}.

Вот пример простого кода:

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

/**
 * Простой пример кода
 */
public class JsonExample {
    public static void main(String[] args) {
        String jsonString = "{\"phonetype\":\"N95\",\"cat\":\"WP\"}";

        try {
            ObjectMapper mapper = new ObjectMapper();
            JsonNode node = mapper.readTree(jsonString); // Преобразуем строку JSON в JsonNode

            String phoneType = node.get("phonetype").asText(); // Получаем значение phonetype
            String cat = node.get("cat").asText(); // Получаем значение cat

            System.out.println("Phone Type: " + phoneType);
            System.out.println("Category: " + cat);
        } catch (Exception e) {
            e.printStackTrace(); // Обработка исключений
        }
    }
}

Этот код создает объект ObjectMapper, который используется для разбора JSON-строки в объект JsonNode. Затем вы можете получить значения по ключам phonetype и cat с помощью метода get(), а затем использовать asText() для получения текстовых значений. Не забудьте обернуть ваш код в блок try-catch, чтобы правильно обрабатывать возможные исключения.

0

Я предпочитаю использовать библиотеку google-gson для работы с JSON, и именно поэтому мне не нужно взаимодействовать с JSONObject напрямую.

В этом случае я создаю класс, соответствующий свойствам вашего JSON-объекта:

class Phone {
    public String phonetype;
    public String cat;
}

Как это работает:

String jsonString = "{\"phonetype\":\"N95\",\"cat\":\"WP\"}";
Gson gson = new Gson();
Phone fooFromJson = gson.fromJson(jsonString, Phone.class);

Тем не менее, мне кажется, что ваш вопрос скорее о том, как получить объект JSONObject из JSON-строки.

Я посмотрел на API google-json и не нашел ничего столь же простого, как в API org.json, который, вероятно, лучше подойдет для ваших нужд, если вы действительно хотите использовать "голый" JSONObject.

Вот ссылка на документацию: JSONObject API.

С помощью org.json.JSONArray (другого абсолютно отличного API) вы можете сделать что-то вроде этого:

JSONObject jsonObject = new JSONObject("{\"phonetype\":\"N95\",\"cat\":\"WP\"}");
System.out.println(jsonObject.getString("phonetype"));

На мой взгляд, хорошая сторона google-gson заключается в том, что вам не нужно работать с JSONObject. Вы просто получаете JSON, передаете класс, в который хотите десериализовать, и ваши атрибуты класса будут сопоставлены с полями JSON. Однако у каждого свои требования; возможно, вам не позволительно иметь заранее сопоставленные классы при десериализации, потому что данные могут быть слишком динамичными на этапе генерации JSON. В таком случае просто используйте библиотеку json.org.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь