如何从JsValue获得价值?

时间:2017-10-26 02:29:22

标签: json mongodb scala playframework

例如: 我的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"
                                }
                                ]

2 个答案:

答案 0 :(得分:0)

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

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中获取它。

答案 1 :(得分:0)

您需要将"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"}]]}