Получить значения httpresponse, используя командный файл - PullRequest
0 голосов
/ 09 сентября 2018

Например, у меня есть этот HTTP-ответ:

{
  "location": {
    "lat": 51.0,
    "lng": -0.1
  },
  "accuracy": 1200.4
}

Как мне получить только значения 51.0 и -0.1? Я пытался сделать это с этим:

for /F "tokens=3 delims= " %%a in (foo1.tmp) do (
    echo %%a >> url.tmp
)
set /p lat=<url.tmp
more +1 <url.tmp >new.tmp
for /F "tokens=* delims= " %%a in (new.tmp) do (
    set var2=%%a
)

Мне удалось получить первое значение, которое было 51.0, но для второго значения, которое как var2, я получаю значение 1200.4, которое должно быть -0.1. Любая помощь здесь?

1 Ответ

0 голосов
/ 09 сентября 2018

Чтобы лучше объяснить, что делает мой единственный вкладыш из комментария:

findstr "lat lng" <foo1.tmp

фильтрует строки, содержащие lat или lng, используя режим регулярного выражения по умолчанию, пример вывода:

    "lat": 51.0,
    "lng": -0.1

Вместо использования временного файла вы можете напрямую использовать curl/wget

Для обработки вывода for /f анализирует строку с разделителями :, (двоеточие, запятая, пробел).
Ведущие разделы игнорируются, соседние считаются только одним, поэтому

%% A содержит "lat" / "lng"
%% B содержит 51.0 / "-0.1"

Для удаления двойных кавычек из %% A используется модификатор переменной ~.

В итоге строка (партия):

for /f "tokens=1,2 delims=:, " %%A in ('findstr "lat lng" ^<foo1.tmp') do set "%%~A=%%B"

устанавливает переменные

> set l
lat=51.0
lng=-0.1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...