当前位置: 首页 > 编程笔记 >

apache-spark 使用Gson将JSON映射到自定义类

孔阳炎
2023-03-14
本文向大家介绍apache-spark 使用Gson将JSON映射到自定义类,包括了apache-spark 使用Gson将JSON映射到自定义类的使用技巧和注意事项,需要的朋友参考一下

示例

使用Gson,您可以读取JSON数据集并将其映射到自定义类MyClass。

由于Gson不可序列化,因此每个执行程序都需要自己的Gson对象。而且,MyClass必须可序列化才能在执行程序之间传递。

请注意,file(s)作为json文件提供的并不是典型的JSON文件。每行必须包含一个单独的,自包含的有效JSON对象。因此,常规的多行JSON文件通常会失败。

val sc: org.apache.spark.SparkContext // 现有的SparkContext

// 路径指向JSON数据集。
// 该路径可以是单个文本文件,也可以是存储文本文件的目录。
val path = "path/to/my_class.html" target="_blank">json"
val linesRdd: RDD[String] = sc.textFile(path)

// 将json映射到MyClass
val myClassRdd: RDD[MyClass] = linesRdd.map{ l => 
    val gson = new com.google.gson.Gson()
    gson.fromJson(l, classOf[MyClass])
}

如果创建Gson对象的成本太高,mapPartitions则可以使用方法对其进行优化。有了它,Gson每个分区而不是每行将有一个:

val myClassRdd: RDD[MyClass] = linesRdd.mapPartitions{p => 
    val gson = new com.google.gson.Gson()
    p.map(l => gson.fromJson(l, classOf[MyClass]))
}
           

 类似资料:
  • 问题内容: 我有以下JSON表示盐请求的服务器响应: 我尝试使用以下POJO映射它: 现在每次我这样做: 该为空。如何使用Gson将JSON映射到POJO?我的变量顺序对Gson映射重要吗? 问题答案: 我的变量顺序对Gson映射重要吗? 不,不是这样。 如何使用Gson将JSON映射到POJO? 它是 区分大小写 和JSON字符串键应该是相同的POJO类使用的变量名。 您可以使用@Seriali

  • 我有以下JSON来表示salt请求的服务器响应: 我尝试用以下POJO映射它: 每次我这样做: 为空。如何使用GSON将JSON映射到POJO?变量的顺序对Gson映射重要吗?

  • 例如,我有以下接口映射器: 在代码中,您可以看到映射和一些默认方法,其中包含其他映射。如何在Mapstruct映射中使用这些方法,以便Mapstruct使用这些方法在字段中填充值?

  • 我有一个像这样的json,它嵌套在其中一个字段中- 我创建了一个自定义类, 在我的服务类中,我正在读取json并将其映射到我的EmailTemplate类中,但是映射失败了。这里有什么可以用的? 例外情况: 我试着添加 但这也不起作用。

  • 我使用gson在Java对象上映射JSON。我有一个类似于下面示例的JSON 假设我只想映射选定的字段,比如博客部分的标题和描述。为此,我创建了java类来处理这个请求,并创建了Blog对象,它有两个字段,用JSON表示字段,我想映射它们 要映射JSON的对象: 我的问题是:我能这样做吗?没有创建JSON中的所有其他字段,也没有匹配“节点”,我不需要像meta这样的内容。?或者我需要为我正在获取的

  • 让我们假设我有以下json 如何在java中创建一个自定义类来映射它?我试过这个班的形状 并且形状是 用Jackson地图绘制器绘制地图 正如预期的那样,给我一个错误: 我想要"0008005"作为字段值而不是字段键,这些值是根据API动态变化的,所以如何映射这个json,有没有其他直接的方法最后一个选项op自定义反序列化?