簡體   English   中英

將Web API返回的JSON字符串轉換為JSON對象

[英]Convert a JSON string returned from web API to JSON object

我正在編寫代碼以從Web API獲取JSON數據,並最終希望使用Phoenix將其放入HBASE表中。

我用來從Web API獲取數據的初始代碼以字符串形式返回我的數據:

class Health() {
 def getHealthData() {
  val userRDD = df.select("ID", "PERMISSION_T", "UPDATE_T", "HEALTHTID").rdd;
  val newData = userRDD.map(
   (
    row => {
     {
      var ID = row(0).toString // User ID
      var permT = row(1).toString // access token
      var rT = row(2).toString // refresh token
      var healthID = row(3).toString // fitbit user id
      var forDate = "2018-12-04"
      val hUrl = s "web api url"
      try {
       --Piece of code to connect to web api-- --
        hJsonStr = heartHandler.handleResponse(heartResponse).trim
       println(s "=============In TRY(Print hJsonStr) ============$hJsonStr")
      }
      heartClient.getConnectionManager().shutdown();
     } catch {
      case unauthorized:
       Exception => {
        println(s "Unknown exception: $hUrl")
        RecoverToken()
       }
     }
     def RecoverToken(): Unit = {
      println("<<<<<<<<<< Recover Token >>>>>>>>>")
      val recoverUrl = "recover url"
     }
     //heartJson
     //heartJsonStr
     "ID:" + ID + s "--$hUrl -- $hJsonStr -- " //+ accessToken  //+ "--" + activitiesJsonStr
    };
   }
  )
 );
 newData.collect.foreach {
  println
 }


 val fb = new Fitbit(); // initialize new fitbit object
 fb.getFitBitData(); // call function to fetch data

現在,我想將此具有內置JSON值的字符串轉換為適當的JSON對象,以便可以將其放入HBASE 我需要在Zappelin上使用Spark,Scala進行此操作。

以下是我使用上述代碼從Web API獲取的示例數據:

ID:XYZ1--Web URL-{“ activities-heart”:[{“ dateTime”:“ 2018-12-18”,“ value”:{“ customHeartRateZones”:[],“ heartRateZones”:[{“ caloriesOut “:714.31496,” max“:88,” min“:30,” minutes“:667,” name“:” Out of Range“},{” caloriesOut“:240.01076,” max“:123,” min“: 88,“ minutes”:66,“ name”:“ Fat Burn”},{“ caloriesOut”:0,“ max”:150,“ min”:123,“ minutes”:4,“ name”:“ Cardio” },{“ caloriesOut”:0,“ max”:220,“ min”:150,“ minutes”:0,“ name”:“ Peak”}],“ restingHeartRate”:62}}]}}-ID: XYZ2-網絡網址--

我嘗試導入一些JSON庫並使用下面的代碼,但是由於語法錯誤而失敗:

import org.json4s.jackson.JsonMethods._
val parsed = parse(newData).asInstanceOf[JObject]
parse(newData).asInstanceOf[JObject]

在@vindev的建議之后,我顯然意識到我需要先刪除其他字符串,然后再嘗試將JSON字符串轉換為JSON對象。 一旦做到這一點,我就可以在循環內將其轉換。 在代碼中獲取hJsonStr的值后,我使用了下面的代碼:

hJsonStr = heartHandler.handleResponse(heartResponse).trim

import org.json4s.jackson.JsonMethods._
val parsedHJsonStr = parse(hJsonStr)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM