In circe Json
имеет шесть asX
методов, которые соответствуют шести типам данных в JSON.Например, если Json
экземпляр x
представляет логическое значение JSON, x.asBoolean
вернет Some
, содержащее значение в виде Boolean
, но если x
- это строка JSON, массив, объект, числоили ноль, x.asBoolean
будет пустым.
Вы видите .asString
return None
в этом случае, потому что вы вызываете его для значения Json
, которое представляет объект JSON, а нестрока JSON.
Метод toString
в Json
совершенно другой: это универсальный Scala / Java toString
, который в случае Json
реализован как .spaces2
.Я не уверен, что вы пытаетесь сделать здесь, но в целом я бы рекомендовал избегать toString
- если вы хотите сериализовать значение io.circe.Json
, лучше использовать принтер или методы печати, которые делаютпараметры форматирования более явные (например, noSpaces
, spaces2
и т.методы на Json
. В целом в Circe «as» используется в именах методов для кодирования или декодирования, что не совсем то, что происходит в этих случаях, но достаточно близко, что я никогда не удосужился придумать лучшееальтернатива.)