Как преобразовать строку Edn в Json

Мне нужно получить данные с какого-то сайта, который отправляет ответы с телами edn. Я пытаюсь преобразовать отправленный обратно Edn в Json, чтобы я мог проанализировать его с помощью Jsoup.

Я нашел веб-сайт, который смог выполнить преобразование, но как мне реализовать что-то подобное в java ?

Я пробовал что-то вроде этого, но это не сработало:

public static String edmToJson(String edm) {
    String json = edm;
    json = json.replaceFirst("(\\(\\{).*?(}\\))", "1").replace("(", "").replace("})", "").replace("} {", "},{");
    return json;
}

Есть ли способ сделать это без закрытия?


person Rafat Rifaie    schedule 06.06.2020    source источник
comment
Отвечает ли это на ваш вопрос? Как распечатать вывод EDN в формате JSON с помощью специального кодировщика Cheshire   -  person JoSSte    schedule 06.06.2020
comment
@JoSSte Я надеялся на чисто java-кодовый подход. Я ничего не знаю о закрытии.   -  person Rafat Rifaie    schedule 06.06.2020
comment
что-то вроде github.com/mikera/edn-pojos?   -  person JoSSte    schedule 06.06.2020


Ответы (1)


Вы можете анализировать данные EDN в java с помощью библиотеки типа edn-java.

Пример использования:

@Test
public void simpleUsageExample() throws IOException {
    Parseable pbr = Parsers.newParseable("{:x 1, :y 2}");
    Parser p = Parsers.newParser(defaultConfiguration());
    Map<?, ?> m = (Map<?, ?>) p.nextValue(pbr);
    assertEquals(m.get(newKeyword("x")), 1L);
    assertEquals(m.get(newKeyword("y")), 2L);
    assertEquals(Parser.END_OF_INPUT, p.nextValue(pbr));
}

Полные документы доступны на edn-java

person Smile    schedule 22.06.2020