[英]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.