【问题标题】:How to get value from JsValue?如何从 JsValue 中获取价值?
【发布时间】:2018-04-07 06:45:56
【问题描述】:

例如: 我的 Db 商店跟随 Json。表单以下 json 我需要提取特定字段的值。

"student": [
                                          {
                                    "name": "Xyz",
                                    "college": "abc",
                                    "student_id":{
                                       "$oid": "59a9314f6d0000920962e247"
                                     }},
                                           {
                                    "name": "DDD",
                                    "college": "opop",
                                    "student_id":{
                                        "$oid": "59a9314f6d0000920962e257"
                                }}
                                ]

如何只选择“$oid”的值并按以下方式保存 json:

"student": [
                                          {
                                    "name": "Xyz",
                                    "college": "abc",
                                    "student_id":
                                      "59a9314f6d0000920962e247"
                                     },
                                           {
                                    "name": "DDD",
                                    "college": "opop",
                                    "student_id":
                                      "59a9314f6d0000920962e257"
                                }
                                ]

【问题讨论】:

    标签: json mongodb scala playframework


    【解决方案1】:

    在我的场景中,我从客户端读取它 -

    String Json = null;
    JsonNode body = request().body().asJson();
    Json = body.toString();
    Logger.info(Json);
    String role = body.get("role").get("role").asText();
    users.firstName = body.get("firstName").asText();
    users.lastName = body.get("lastName").asText();
    

    您需要根据您的场景更改JsonNode body = request().body().asJson(); 的定义和其他代码才能从db 中获取它。

    【讨论】:

      【解决方案2】:

      您需要将"student_id" jsValue 替换为字符串值,如下所示:

          val original: JsValue = Json.parse(
            """ {"student": [
            {
              "name": "Xyz",
              "college": "abc",
              "student_id":{
              "$oid": "59a9314f6d0000920962e247"
            }},
            {
              "name": "DDD",
              "college": "opop",
              "student_id":{
              "$oid": "59a9314f6d0000920962e257"
            }}
            ]}""")
      
          val changed = original.as[JsObject] ++ Json.obj(
            "student" -> Json.arr {
              original.transform((__ \ 'student)
                .json.pick[JsArray])
                .getOrElse(Json.arr())
                .value.map(e => {
                val value = e.transform((__ \ 'student_id \ '$oid).json.pick[JsString]).get
                e.as[JsObject] ++ Json.obj("student_id" -> value)
              })
            })
          println(Json.stringify(changed))
      
      //Result:
      {"student":[[{"name":"Xyz","college":"abc","student_id":"59a9314f6d0000920962e247"},{"name":"DDD","college":"opop","student_id":"59a9314f6d0000920962e257"}]]}
      

      【讨论】:

        猜你喜欢
        • 2017-10-01
        • 2021-12-26
        • 1970-01-01
        • 2016-08-24
        • 2012-11-29
        • 2018-08-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多