Я получаю массив объектов JSON, часть которых приведена ниже:
[{"Team":"LTD","Amount":10000.0,"Success":true},
{"Team":"XYZ","Amount":50000.0,"Success":false}]
Я хочу принудительно прочитать все поля в виде строки, чтобы сделать дальнейшую обработку простой и равномерной.Поэтому Amount
должен читаться как 10000.0
, а не как 1.0E5
.
Ниже приведен фрагмент кода, который я использую:
String input=IOUtils.toString(inputStream);
String[] fields="Amount|Success".split("\\|");
ReadContext inputParsed =JsonPath.parse(input);
List<JSONArray> resultList=Arrays.stream(fields)
.map(x -> inputParsed.read("$[*]."+x,JSONArray.class))
.collect(Collectors.toList());
//Further code to process resultList
Когда я печатаю значения и типAmount
из resultList
, они показаны как 1.0E5
и String
соответственно.В промежутке между синтаксическим анализом и чтением преобразование из Double
в String
, кажется, происходит неожиданным образом.
Я прочитал аналогичный пост здесь , и он решает немного другую проблему.
inputStream
и fields
, которые должны быть извлечены, будут предоставлены во время выполнения.Следовательно, использование POJO и других методов, которые должны определить Class, не будет работать.