Есть ли способ получить обратно путь и значение из JsonPath?

Предполагаю, что вы выполняете все вышеуказанного кода каждый раз, когда вы что-то пишете в файл. Каждый раз, когда поток для файла открывается, его указатель поиска позиционируется в начале, поэтому все записи в конечном итоге переписывают то, что было до этого.

Вы можете решить проблему двумя способами: либо с удобным

file2 = new StreamWriter("c:/file.txt", true);

или путем прямого позиционирования указателя потока:

file2 = new StreamWriter("c:/file.txt");
file2.BaseStream.Seek(0, SeekOrigin.End);
1
задан tomi 16 January 2019 в 15:44
поделиться

1 ответ

Вы можете прочитать пути и значения отдельно, а затем собрать результаты вместе.

Вот пример использования Jayway JsonPath :

String json = "[\n" +
        "  {\n" +
        "    \"id\": 1,\n" +
        "    \"person\": {\n" +
        "      \"name\": \"john\",\n" +
        "      \"age\": \"28\"\n" +
        "    }\n" +
        "  },\n" +
        "  {\n" +
        "    \"id\": 2,\n" +
        "    \"person\": {\n" +
        "      \"name\": \"jane\",\n" +
        "      \"age\": \"25\"\n" +
        "    }\n" +
        "  }\n" +
        "]";

Object parse = Configuration.defaultConfiguration()
        .jsonProvider()
        .parse(json);

JsonPath path = JsonPath.compile("$[*].person.name");

// read the paths
JSONArray asPaths = path.read(parse, Configuration.builder()
        .options(Option.AS_PATH_LIST).build());
String[] paths = asPaths.toArray(new String[asPaths.size()]);

// read the values
JSONArray asValues = path.read(parse);
String[] values = asValues.toArray(new String[asValues.size()]);

// put the paths and values together using the array indexes
Map<String, String> valuesAndPaths = new HashMap<>();
for (int i = 0; i < values.length; i++) {
    valuesAndPaths.put(values[i], paths[i]);
}

for (Map.Entry<String, String> entry : valuesAndPaths.entrySet()) {
    System.out.println(entry.getKey() + ", " + entry.getValue());
}

.

0
ответ дан glytching 16 January 2019 в 15:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: