1

我已经阅读了一个关于如何使用单片眼镜来解析一些深度 json 的示例,但该示例有点直截了当,但我有一个更困难的例子,看起来像这样:

{
"products": {
  "HY3BZPP2B6K8MSJF" : {
    "sku" : "HY3BZPP2B6K8MSJF",
    "productFamily" : "Storage",
    "attributes" : {
        "servicecode" : "AmazonEC2",
        "location" : "US East (N. Virginia)",
        "locationType" : "AWS Region",
        "storageMedia" : "SSD-backed",
        "volumeType" : "General Purpose",
        "maxVolumeSize" : "16 TiB",
        "maxIopsvolume" : "16000",
        "maxIopsBurstPerformance" : "3000 for volumes <= 1 TiB",
        "maxThroughputvolume" : "250 MiB/s",
        "usagetype" : "EBS:VolumeUsage.gp2",
        "operation" : "",
        "servicename" : "Amazon Elastic Compute Cloud",
        "volumeApiName" : "gp2"
    }
  },
  ...
 },
 "terms" : {
   "OnDemand" : {
      "HY3BZPP2B6K8MSJF" : {
         "HY3BZPP2B6K8MSJF.JRTCKXETXF" : {
           "offerTermCode" : "JRTCKXETXF",
           "sku" : "HY3BZPP2B6K8MSJF",
           "effectiveDate" : "2021-10-01T00:00:00Z",
           "priceDimensions" : {
              "HY3BZPP2B6K8MSJF.JRTCKXETXF.6YS6EN2CT7" : {
                "rateCode" : "HY3BZPP2B6K8MSJF.JRTCKXETXF.6YS6EN2CT7",
                "description" : "$0.10 per GB-month of General Purpose SSD (gp2) provisioned storage - US East (Northern Virginia)",
                "beginRange" : "0",
                "endRange" : "Inf",
                "unit" : "GB-Mo",
                "pricePerUnit" : {
                    "USD" : "0.1000000000"
                },
                "appliesTo" : [ ]
            }
        },
        "termAttributes" : { }
    }
 },
 ...
}

我可以使用以下代码对其进行解析:

val productData = productConnector.getProducts(100).map(p => Serializer.fromJson[ProductInfo](p))

但我不知道如何编写镜头,所以我可以使用“volumeApiName”和“pricePerUnit”创建一个地图,例如 (gp2 -> 0.1000000000) 注意“volumeApiName”有一个可以使用它的“sku”稍后在 "terms"."OnDemand". 上进行匹配,然后更深入地了解 pricePerUnit。

4

0 回答 0