Самый быстрый способ разобрать одно значение из строки JSON - PullRequest
0 голосов
/ 23 января 2020

У меня есть строка, которую я получаю из веб-сокета в следующем формате JSON. Мне нужен способ с очень низкой задержкой для анализа значения c, связанного с ключом C. Имена ключей одинаковы для каждого пакета, который я получаю, но значения могут отличаться. Таким образом, ключ C останется прежним, но значение может измениться с c на что-то более длинное. В моем приложении из реальной жизни число записей внутри X и Y может быть намного больше.

Я пробовал несколько разных подходов, включая анализ одного поля с использованием Jackson [1], чтобы парсинг полной строки до JsonNode, но все они слишком медленные (более 50 микросекунд). Я думал о том, чтобы найти позицию в строке "C" с помощью [2], а затем взять следующие несколько символов после этого, но проблема в том, что значение c имеет переменную длину, что делает его сложным.

String s = {"A":"a","B":"b","data":[{"C":"c","X":[["3.79","28.07","1"],["3.791","130.05","3"],["3.792","370.8958","5"]],"Y":[["3.789","200","1"],["3.788","1238.1709","4"],["3.787","513.4051","3"]]}'

Мне бы хотелось что-то вроде этого:

String valueOfC = getValueOfC(s) // return in only a few microseconds

[1] Как читать одно JSON поле с Джексоном

[2] Java: способ получить позицию совпадения в строке?

1 Ответ

0 голосов
/ 23 января 2020
s.substring(s.indexOf("\"data\":[{\"C") + 4, s.indexOf("\"",s.indexOf("\"data\":[{\"C") + 4)));

Это субмикросекунда.

...