您如何使用Aeson访问字段中的列表?

时间:2018-12-17 11:08:56

标签: lens aeson wreq

我一直在关注wreq tutorial,也准备Snoyman's blog post来了解Data.Aeson.Lens的工作原理,但是我在理解如何做非常基本的事情上遇到了麻烦。

例如,为什么这两个访问根据数组是顶级数组还是从Json字段悬挂而给出不同的结果?

#!/usr/bin/env stack
-- stack --resolver lts-12.22 script
{-# LANGUAGE OverloadedStrings #-}

import Control.Lens
import Data.Aeson.Lens
import qualified Data.ByteString as B

main :: IO ()
main = do
  let bs = "{\"dummy\": [1,2,3]}" :: B.ByteString
  print $ bs ^?! key "dummy" . values . _Number
  let b2 = "[1,2,3]" :: B.ByteString
  print $ b2 ^.. values . _Number

返回

1.0
[1.0,2.0,3.0]

在两种情况下获得相同结果的正确方法是什么?

0 个答案:

没有答案