关于SparkStreaming解析json

skins丶Li 2017-07-04 11:27:23
json 格式 是这样的

{"locationstream":[{"IdType":"IP","Timestamp":1475222328000,"datatype":"coordinates","location":{"x":313.0,"y":205.0,"z":23},"userid":["0ac94949"],"map":{"mapid":"23"}},{"IdType":"IP","Timestamp":1475222328000,"datatype":"coordinates","location":{"x":184.0,"y":170.0,"z":23},"userid":["0aaeafcd"],"map":{"mapid":"23"}},{"IdType":"IP","Timestamp":1475222328000,"datatype":"coordinates","location":{"x":485.0,"y":196.0,"z":23},"userid":["0a8db61e"],"map":{"mapid":"23"}}]}



请教各位大神 怎样拿到 里面的 每个信息
{"IdType":"IP","Timestamp":1475222328000,"datatype":"coordinates","location":{"x":313.0,"y":205.0,"z":23},"userid":["0ac94949"],"map":{"mapid":"23"}}


...全文
1665 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jelly lee 2019-07-22
  • 打赏
  • 举报
回复
亲,请问你的代码是怎么实现动态解析json的呢,我的也是json套json,麻烦啦
LinkSe7en 2017-07-04
  • 打赏
  • 举报
回复
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.1.41</version> </dependency> JSON解析而已。。。
skins丶Li 2017-07-04
  • 打赏
  • 举报
回复
引用 4 楼 link0007 的回复:
[quote=引用 3 楼 skinsli 的回复:] [quote=引用 1 楼 link0007 的回复:] <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.1.41</version> </dependency> JSON解析而已。。。
第一个json 就是一个键值对,他的值是个数组,然后又嵌套。求scala代码[/quote] 你json格式是固定的吧?那你这问题就很无脑了。。。估计你没做过web开发。。。

import com.alibaba.fastjson.JSON

object Main {
  def main(args: Array[String]): Unit = {
    val jsonStr = "{\"IdType\":\"IP\",\"Timestamp\":1475222328000,\"datatype\":\"coordinates\",\"location\":{\"x\":313.0,\"y\":205.0,\"z\":23},\"userid\":[\"0ac94949\"],\"map\":{\"mapid\":\"23\"}}"

    val json = JSON.parseObject(jsonStr)

    val idType = json.getString("IdType")
    val timestamp = json.getLong("Timestamp")
    val dataType = json.getString("datatype")

    val location = json.getJSONObject("location")
    val x = location.getInteger("x")
    val y = location.getInteger("y")
    val z = location.getInteger("z")

    val userid = json.getJSONArray("userid")
    for( i <- 0.to(userid.size) ) {
      println(userid.getString(i))
    }

    val map = json.getJSONObject("map")
    val mapid = map.getString("mapid")
  }
}
[/quote]
引用 4 楼 link0007 的回复:
[quote=引用 3 楼 skinsli 的回复:] [quote=引用 1 楼 link0007 的回复:] <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.1.41</version> </dependency> JSON解析而已。。。
第一个json 就是一个键值对,他的值是个数组,然后又嵌套。求scala代码[/quote] 你json格式是固定的吧?那你这问题就很无脑了。。。估计你没做过web开发。。。

import com.alibaba.fastjson.JSON

object Main {
  def main(args: Array[String]): Unit = {
    val jsonStr = "{\"IdType\":\"IP\",\"Timestamp\":1475222328000,\"datatype\":\"coordinates\",\"location\":{\"x\":313.0,\"y\":205.0,\"z\":23},\"userid\":[\"0ac94949\"],\"map\":{\"mapid\":\"23\"}}"

    val json = JSON.parseObject(jsonStr)

    val idType = json.getString("IdType")
    val timestamp = json.getLong("Timestamp")
    val dataType = json.getString("datatype")

    val location = json.getJSONObject("location")
    val x = location.getInteger("x")
    val y = location.getInteger("y")
    val z = location.getInteger("z")

    val userid = json.getJSONArray("userid")
    for( i <- 0.to(userid.size) ) {
      println(userid.getString(i))
    }

    val map = json.getJSONObject("map")
    val mapid = map.getString("mapid")
  }
}
[/quote]
引用 4 楼 link0007 的回复:
[quote=引用 3 楼 skinsli 的回复:] [quote=引用 1 楼 link0007 的回复:] <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.1.41</version> </dependency> JSON解析而已。。。
第一个json 就是一个键值对,他的值是个数组,然后又嵌套。求scala代码[/quote] 你json格式是固定的吧?那你这问题就很无脑了。。。估计你没做过web开发。。。

import com.alibaba.fastjson.JSON

object Main {
  def main(args: Array[String]): Unit = {
    val jsonStr = "{\"IdType\":\"IP\",\"Timestamp\":1475222328000,\"datatype\":\"coordinates\",\"location\":{\"x\":313.0,\"y\":205.0,\"z\":23},\"userid\":[\"0ac94949\"],\"map\":{\"mapid\":\"23\"}}"

    val json = JSON.parseObject(jsonStr)

    val idType = json.getString("IdType")
    val timestamp = json.getLong("Timestamp")
    val dataType = json.getString("datatype")

    val location = json.getJSONObject("location")
    val x = location.getInteger("x")
    val y = location.getInteger("y")
    val z = location.getInteger("z")

    val userid = json.getJSONArray("userid")
    for( i <- 0.to(userid.size) ) {
      println(userid.getString(i))
    }

    val map = json.getJSONObject("map")
    val mapid = map.getString("mapid")
  }
}
[/quote]多谢,已经解决了。json格式是这样的 {locationstream:【{IdType:XXX,XXX:XXX}】}
LinkSe7en 2017-07-04
  • 打赏
  • 举报
回复
引用 3 楼 skinsli 的回复:
[quote=引用 1 楼 link0007 的回复:] <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.1.41</version> </dependency> JSON解析而已。。。
第一个json 就是一个键值对,他的值是个数组,然后又嵌套。求scala代码[/quote] 你json格式是固定的吧?那你这问题就很无脑了。。。估计你没做过web开发。。。

import com.alibaba.fastjson.JSON

object Main {
  def main(args: Array[String]): Unit = {
    val jsonStr = "{\"IdType\":\"IP\",\"Timestamp\":1475222328000,\"datatype\":\"coordinates\",\"location\":{\"x\":313.0,\"y\":205.0,\"z\":23},\"userid\":[\"0ac94949\"],\"map\":{\"mapid\":\"23\"}}"

    val json = JSON.parseObject(jsonStr)

    val idType = json.getString("IdType")
    val timestamp = json.getLong("Timestamp")
    val dataType = json.getString("datatype")

    val location = json.getJSONObject("location")
    val x = location.getInteger("x")
    val y = location.getInteger("y")
    val z = location.getInteger("z")

    val userid = json.getJSONArray("userid")
    for( i <- 0.to(userid.size) ) {
      println(userid.getString(i))
    }

    val map = json.getJSONObject("map")
    val mapid = map.getString("mapid")
  }
}
skins丶Li 2017-07-04
  • 打赏
  • 举报
回复
引用 1 楼 link0007 的回复:
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.1.41</version> </dependency> JSON解析而已。。。
第一个json 就是一个键值对,他的值是个数组,然后又嵌套。求scala代码
skins丶Li 2017-07-04
  • 打赏
  • 举报
回复
第一个json 就是一个键值对,他的值是个数组,然后又嵌套。求scala代码

1,261

社区成员

发帖
与我相关
我的任务
社区描述
Spark由Scala写成,是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于MapReduce算法实现的分布式计算。
社区管理员
  • Spark
  • shiter
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧