powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / JsonValue из строки
24 сообщений из 24, страница 1 из 1
JsonValue из строки
    #39746136
Фотография Владимир П.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно получить JsonValue (JSR-374) из строкового представления JSON. Ожидал, что есть простой способ (например, предназначенный для этого статический метод). Но, перерыв кучу интернета, так и не нашёл ничего, кроме многошагового способа c привлечением средств ввода-вывода:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
import java.io.StringReader;
import javax.json.Json;
import javax.json.JsonReader;
import javax.json.JsonValue;
...
JsonReader reader = Json.createReader(new StringReader( inputJsonString ));
JsonValue json = reader.readValue();
reader.close();



Неужели и правда в API не включили простого конвертера из строки в Json?
...
Рейтинг: 0 / 0
JsonValue из строки
    #39746150
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владимир П.,

А что ты подразумеваешь под строкой? чем тебе просто строка с json-ом внутри не json ?
...
Рейтинг: 0 / 0
JsonValue из строки
    #39746158
Фотография Владимир П.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerА что ты подразумеваешь под строкой?
Переменную типа java.lang.String, конечно же.

questionerчем тебе просто строка с json-ом внутри не json?
Хочу JsonValue, чтобы воспользоваться всеми удобствами JSON Processing API.
...
Рейтинг: 0 / 0
JsonValue из строки
    #39746396
Korcar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир П., строка с джейсоном уже готовая или ты её собираешь из каких-то данных?
...
Рейтинг: 0 / 0
JsonValue из строки
    #39746416
Фотография Владимир П.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Korcar,
Готовая, из внешнего источника. В данном случае поступает из БД, но в принципе источник этих строковых данных может быть любым.
...
Рейтинг: 0 / 0
JsonValue из строки
    #39746419
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир П.,
Баловство твоя задумка.
...
Рейтинг: 0 / 0
JsonValue из строки
    #39746430
Korcar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир П.Korcar,
Готовая, из внешнего источника. В данном случае поступает из БД, но в принципе источник этих строковых данных может быть любым.
как решишь, напиши. такая же проблема, но я джейсон собираю из объекта методом stringify, но не до конца работает
...
Рейтинг: 0 / 0
JsonValue из строки
    #39746441
Фотография Владимир П.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Баловство твоя задумка.
А каков правильный путь?
...
Рейтинг: 0 / 0
JsonValue из строки
    #39746463
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир П.Petro123Баловство твоя задумка.
А каков правильный путь?вы задачу не озвучили.
...
Рейтинг: 0 / 0
JsonValue из строки
    #39746504
Фотография Владимир П.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123вы задачу не озвучили.
Первое предложение первого сообщения этой темы.

Есть переменная типа String, содержащая текстовое представление данных в формате JSON. Требуется конвертированить её в значение типа JsonValue наиболее простым способом.

(куда уж конкретнее?)
...
Рейтинг: 0 / 0
JsonValue из строки
    #39746512
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир П.,
Я поставил под сомнение постановку задачи вашего величества.
Куда уж конкретнее?
По логике нужна задача на ранг выше.
Программисты часто выдумывают задачи для себя любимых.
Тип зачем понадобился?
Нужно парсить - берем парсер. И т.д.
...
Рейтинг: 0 / 0
JsonValue из строки
    #39746518
Лысый дядька
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир П.Но, перерыв кучу интернета, так и не нашёл ничего, кроме многошагового способа c привлечением средств ввода-вывода:

В интеренете просто куча решений для парсинга JSON. Или религия не позволяет выйти чуть за рамки стандартной библиотеки?
...
Рейтинг: 0 / 0
JsonValue из строки
    #39746539
Korcar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лысый дядькаВладимир П.Но, перерыв кучу интернета, так и не нашёл ничего, кроме многошагового способа c привлечением средств ввода-вывода:

В интеренете просто куча решений для парсинга JSON. Или религия не позволяет выйти чуть за рамки стандартной библиотеки?
Дядь, а пообщаться?)

Может лучше исходник переделать сразу?
...
Рейтинг: 0 / 0
JsonValue из строки
    #39746696
alex55555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир П.Неужели и правда в API не включили простого конвертера из строки в Json?
API - это не детский сад. Там декларируются интерфейсы, а реализация оставляется внешним игрокам. Так если есть желание, можно обернуть streaming пример в другой класс и сделать конвертер строка-json в один метод. Но на то и гибкость в стандарте, что бы не навязывать именно один метод, потому что это не всегда удобно. А все эти "неужели" есть просто непонимание сути серьёзных API. Нужно видеть "в большом", тогда станет ясно.
...
Рейтинг: 0 / 0
JsonValue из строки
    #39746980
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот кусок моего древнего кода - речь видимо об этом

Код: 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.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
	private SimulatorConfig getSimulatorConfig(String content)
			throws IOException, JsonParseException, JsonMappingException {
		ObjectMapper objectMapper = new ObjectMapper();

		SimulatorConfig config = new SimulatorConfig();
		JsonNode node = objectMapper.readValue(content, JsonNode.class);

		config.setName(node.get("name").asText());
		JsonNode format = node.get("format");
		if (format != null)
			config.setFormat(format.asText());
		config.setSchedule(node.get("schedule").asLong());
		config.setFrequency(node.get("frequency").asLong());

		JsonNode sensores = node.get("sensors");
		if (sensores != null) {
			List<SensorConfig> sensors = new ArrayList<SensorConfig>();
			for (int i = 0; i < sensores.size(); i++) {
				JsonNode sensore = sensores.get(i);
				SensorConfig sc = new SensorConfig();
				sc.setSensor(sensore.get("sensor").asText());
				if (sensore.get("method") != null) {
					sc.setMethod(sensore.get("method").asText());
					JsonNode x = sensore.get("x");
					JsonNode y = sensore.get("y");
					double xx[] = new double[x.size()];
					double yy[] = new double[x.size()];
					for (int j = 0; j < x.size(); j++) {
						xx[j] = x.get(j).asDouble();
						yy[j] = y.get(j).asDouble();
					}
					sc.setX(xx);
					sc.setY(yy);
				}
				sensors.add(sc);
			}
			config.setSensors(sensors);
		}
		
		if (node.get("attributes") != null) {
			Iterator<Entry<String, JsonNode>> nodes = node.get("attributes").getFields();
			if (nodes != null) {
				Map<String, String> atrrMap = new LinkedHashTreeMap<String, String>();
				while (nodes.hasNext()) {
					Map.Entry<String, JsonNode> entry = (Map.Entry<String, JsonNode>) nodes.next();
					System.out.println("key --> " + entry.getKey() + " value-->" + entry.getValue());
					atrrMap.put(entry.getKey(), entry.getValue().asText());
				}
				config.setAttributes(atrrMap);
			}
		}
		return config;
	}



На вход подается прмерно такой JSON

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
{
  "name": "SIM0_",
  "schedule":40,
  "frequency":1000,
  "start": false,
  "sensors":[{"sensor" : "Vibration",
               "method" : "spline",
               "x":[0.00, 10.0, 20.0, 30.0, 40.0],
               "y":[1.00, 2.0, 3.0, 2.0, 1.0]
              },
              {"sensor" : "Rotor_Speed",
               "method" : "spline",
               "x":[0.00, 10.0, 20.0, 30.0, 40.0],
               "y":[100.00, 200.0, 300.0, 200.0, 100.0]
              },
              {"sensor" : "Temperature",
               "method" : "line",
               "x":[0.00, 10.0, 20.0, 30.0, 40.0],
               "y":[10.00, 20.0, 30.0, 20.0, 10.0]
              }
    ]
}



Как строка.

Подробней для чего весь огрород можно здесь прочитать

https://vyatkins.wordpress.com/2016/07/30/velociraptor/
...
Рейтинг: 0 / 0
JsonValue из строки
    #39747020
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergunka,

Очень удобно
...
Рейтинг: 0 / 0
JsonValue из строки
    #39747112
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerSergunka,

Очень удобно

 На самом деле более удобный это библиотека Гугла GSON

Вот хорошая заяснялка у Jenkov

http://tutorials.jenkov.com/java-json/gson.html

Parsing JSON Into Java Objects
GSON can pase JSON into Java objects using the fromJson() method of the Gson object. Here is an GSON example of parsing JSON into a Java object:

Код: java
1.
2.
3.
4.
5.
String json = "{\"brand\":\"Jeep\", \"doors\": 3}";

Gson gson = new Gson();

Car car = gson.fromJson(json, Car.class);


The first line of the example defines the JSON string to parse. The second line creates a Gson instance. The third line calls the gson.fromJson() method which parses the JSON string into a Car object.

The first parameter to fromJson() is the JSON source. In the example above the JSON source is a string. The second parameter to the fromJson() method is the Java class to parse parse the JSON into an instance of. The Gson instance creates an instance of this class and parses the JSON into it. Thus you should make sure that this class has a no-arg constructor, or GSON cannot use it.

Here is how the Car class looks:

Код: java
1.
2.
3.
4.
public class Car {
    public String brand = null;
    public int    doors = 0;
}
...
Рейтинг: 0 / 0
JsonValue из строки
    #39747137
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergunkaНа самом деле более удобный это библиотека Гугла GSONну дак все свелось к парсеру в итоге? А не типу?
...
Рейтинг: 0 / 0
JsonValue из строки
    #39747684
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123SergunkaНа самом деле более удобный это библиотека Гугла GSONну дак все свелось к парсеру в итоге? А не типу?

Ну, дык тогда на stackoverflow.com

https://stackoverflow.com/questions/20624042/how-to-get-json-element-type-with-gson
...
Рейтинг: 0 / 0
JsonValue из строки
    #39747685
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Владимир П.,
Я поставил под сомнение постановку задачи вашего величества.
Куда уж конкретнее?
По логике нужна задача на ранг выше.
Программисты часто выдумывают задачи для себя любимых.
Тип зачем понадобился?
Нужно парсить - берем парсер. И т.д.

АААА! я не читал Вашу дискуссию с ТС
...
Рейтинг: 0 / 0
JsonValue из строки
    #39747697
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergunka,
))
...
Рейтинг: 0 / 0
JsonValue из строки
    #39747750
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто если делать одним методом, он получится сильно перегруженным аргументами, что не хорошо. Видимо по этому и подход такой.
...
Рейтинг: 0 / 0
JsonValue из строки
    #39747753
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettПросто если делать одним методом, он получится сильно перегруженным аргументами, что не хорошо. Видимо по этому и подход такой.
Вы про парсер?
Не вижу там никаких аргументов.
Тоже самое что и xml.
...
Рейтинг: 0 / 0
JsonValue из строки
    #39747949
Фотография Valentin Kolesnikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В spring-boot так можно получить значение строки.

Код: java
1.
2.
3.
4.
            org.springframework.boot.json.JsonParser springParser =
                org.springframework.boot.json.JsonParserFactory.getJsonParser();
            Map<String, Object> object = springParser.parseMap(jsonString);
            String birthday = String.valueOf(object.get("birthday"));



С уважением, Валентин
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / JsonValue из строки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]