Разбор Ruby JSON / hash для получения единственного значения - PullRequest
0 голосов
/ 26 ноября 2018

Я очень новичок в ruby ​​и не смог найти ни одного примера того, что я хотел бы сделать, хотя я уверен, что есть много там.

У меня есть объект ruby ​​json, который мне нужен, чтобы получить определенное значение из первой пары ключей в нем.Ниже приведен ruby ​​/ json, и я хочу взять его и получить из него значение token.

{"token"=>"<my token>", "dc"=>"test-dc"}

Как получить токен?

1 Ответ

0 голосов
/ 26 ноября 2018

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

Внутренний хэш Ruby выглядит следующим образом, когда выражается с помощью inspect:

{"token"=>"<my token>", "dc"=>"test-dc"}

Принимая во внимание, что JSON, который является не зависящим от языка форматом данных, вдохновленным JavaScript, выглядит следующим образом:

{"token": "<my token>", "dc": "test-dc"}

Внешне они похожи, но важное отличие состоит в том, что если у вас есть первый, не как строка, а как Hash, вы можете просто использовать его:

hash["token"]

Если у вас есть последнее, вам нужно будет проанализировать его с чем-то вроде JSON.load:

JSON.load('{"token": "<my token>", "dc": "test-dc"}')["token"]

Конечно, если выЕсли у вас есть Ruby и вам нужен JSON, вы всегда можете вывести его:

JSON.dump({"token"=>"<my token>", "dc"=>"test-dc"})
# => "{\"token\":\"<my token>\",\"dc\":\"test-dc\"}

Обратите внимание, что аргументы dump - это действительный код Ruby, а не строка, как в предыдущем примере.Выходными данными является строка, и поэтому двойные кавычки должны быть экранированы обратной косой чертой.Если вы на самом деле print это увидите, вы увидите это без дополнительного экранирования, и это выглядит нормально, это всего лишь артефакт того, как Ruby представляет строки, используя inspect.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...