Справка по кодированию (если заявления)

Если кто-то просто хочет извлечь значения из простых объектов JSON без необходимости вложенных структур, можно использовать регулярные выражения, даже не выходя из bash.

Вот функция, которую я определил с помощью bash regular выражения, основанные на стандарте JSON :

function json_extract() {
  local key=$1
  local json=$2

  local string_regex='"([^"\]|\\.)*"'
  local number_regex='-?(0|[1-9][0-9]*)(\.[0-9]+)?([eE][+-]?[0-9]+)?'
  local value_regex="${string_regex}|${number_regex}|true|false|null"
  local pair_regex="\"${key}\"[[:space:]]*:[[:space:]]*(${value_regex})"

  if [[ ${json} =~ ${pair_regex} ]]; then
    echo $(sed 's/^"\|"$//g' <<< "${BASH_REMATCH[1]}")
  else
    return 1
  fi
}

Предостережения: объекты и массивы не поддерживаются как значение, но поддерживаются все другие типы значений, определенные в стандарте. Кроме того, пара будет сопоставляться независимо от того, насколько глубоко в документе JSON она сохраняется до тех пор, пока она имеет точно такое же имя ключа.

Используя пример OP:

$ json_extract text "$(curl 'http://twitter.com/users/username.json')"
My status

$ json_extract friends_count "$(curl 'http://twitter.com/users/username.json')"
245

1
задан Jonathan Z 25 March 2019 в 04:51
поделиться

2 ответа

Чтобы преобразовать строку в double, должен выполнить следующий код:

public double doubleString(String text){

        return Double.parseDouble(text);

}

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

0
ответ дан PumpkinX 25 March 2019 в 04:51
поделиться

Я предполагаю, что вам нужно имя метода вызывающего абонента, а затем сравнить его. Насколько я понимаю, это то, что вам нужно.

String callerMethodName = Thread.currentThread().getStackTrace()[2].getMethodName();

Обратите внимание, что вам может понадобиться заменить 2 на 1.

Другим способом может быть отправка имени метода в качестве параметра в вашем втором методе, например: -

public double method2(String callerMethodName){

}
0
ответ дан Jaspreet Jolly 25 March 2019 в 04:51
поделиться
Другие вопросы по тегам:

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