Поместите простой JSON в массив пакета - PullRequest
0 голосов
/ 31 августа 2018

Я получил этот простой код, который читает массив в json и помещает значения в независимые переменные% 1%,% 2%,% 3% и% 4%, вместо этого я хотел бы поместить эти значения в массив myarray [ 1], myarray [2], myarray [3] и myarray [4], как мне изменить код для достижения этой цели?

rem Load stats for exemple do set stats={ 1: "10%", 2: "20%", 3: "30%", 4: "40%" }
for /f "delims=" %%x in (stats.json) do set stats=%%x
rem Remove quotes
set stats=%stats:"=%
rem Remove braces
set "stats=%stats:~2,-2%"
rem Change colon+space by equal-sign
set "stats=%stats:: ==%"
echo %stats%
rem Separate parts at comma into individual assignments
set "%stats:, =" & set "%"

из этого ответа stackoverflow: https://stackoverflow.com/a/36375415/876637

Ответы [ 2 ]

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

Также можно использовать следующий код:

@echo off
for /F "usebackq tokens=1-8 delims=,:{}  " %%A in ("stats.json") do (
    if not "%%~A" == "" if not "%%~B" == "" set "myarray[%%A]=%%~B"
    if not "%%~C" == "" if not "%%~D" == "" set "myarray[%%C]=%%~D"
    if not "%%~E" == "" if not "%%~F" == "" set "myarray[%%E]=%%~F"
    if not "%%~G" == "" if not "%%~H" == "" set "myarray[%%G]=%%~H"
)
set myarray

Примечание: Во второй строке после {} есть два символа: горизонтальная табуляция и пробел.

Вывод:

myarray[1]=10%
myarray[2]=20%
myarray[3]=30%
myarray[4]=40%

Файл stats.json может содержать с этим кодом одну строку с

{ 1: "10%", 2: "20%", 3: "30%", 4: "40%" }

или несколько строк, таких как

{
    1: "10%",
    2: "20%",
    3: "30%",
    4: "40%"
}

Не имеет значения, содержит ли файл stats.json пробелы / табуляции или нет.

Также не имеет значения, содержит ли строка одну, две, три или все четыре пары переменная / значение.

0 голосов
/ 01 сентября 2018
@echo off
setlocal EnableDelayedExpansion

rem Load stats for exemple do set stats={ 1: "10%", 2: "20%", 3: "30%", 4: "40%" }
for /f "delims=" %%x in (stats.json) do set stats=%%x
rem Remove quotes
set stats=%stats:"=%
rem Remove braces
set "stats=%stats:~2,-2%"
rem Change colon+space by right square bracket + equal-sign
set "stats=%stats:: =]=%"
rem Separate parts at comma into individual assignments
set "myarray[%stats:, =" & set "myarray[%"

SET myarray

Выход:

myarray[1]=10%
myarray[2]=20%
myarray[3]=30%
myarray[4]=40%
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...