行政区信息_JSON 解析实现|学习笔记

简介: 快速学习行政区信息_JSON 解析实现

开发者学堂课程【大数据 Spark2020版(知识精讲与实战演练)第四阶段行政区信息_JSON 解析实现】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/691/detail/12121


行政区信息_JSON 解析实现


JSON 解析实现

进行具体功能实现,第一步进行 JSON 解析,

1.目标和步骤

(1)目标

通过 JSON4S 和 ESRI 配合解析提供的 GeoJSON 数据集,获取纽约的每个行政区的范围

(2)步骤

①解析 JSON

②使用 ESRI 生成表示行政区的一组 Geometry 对象

2.解析 JSON

(1)步骤

对照 JSON 中的格式,创建解析的目标类(解析 JSON 需要将数据放入对象中,对象的类型需要和 JSON 数据结果是匹配的,先创建目标类,按照 JSON 格式进行创建)

解析 JSON 数据转为目标类的对象

读取数据集,执行解析

step 1:创建目标类

GeoJSON

{

"type"" : "Featurecollection"

"features" : [

"type" : "Feature" ,

"id" : 0,

"properties" : {

"boroughcode" : 5,

"borough" : "Staten Island" ,

"@id":"http:\/\/nyc.pediacities.com\/Resource\/Borough\/staten_Island"

},

"geometry" : {

"type" : "Polygon" ,

"coordinates" : [

[

[-74.050508064032471,40.566422034160816],[-74.049983525625748,40.566395924928273]]

]

]

}

}

]

}

审核 GeoJSON,最外层是一个对象,花括号开始花括号结束,type 是一个属性, features 是一个属性,features 后有一个中括号,与后面中括号对应,又是一个对象,是数组类型,数组中有多个 feature,两个花括号对应,feature 有个属性properties,关注 borough 行政区名称,geometry 代表行政区范围

features 是一个数组,其中每一个 Feature 代表一个行政区

目标类

将 JSON 解析出来,最外层是 Featurecollection,在 JSON 中可以没有某个具体结构,不解析,如果有要与前面名字一一对应

case class Featurecollection(

features : List[Feature]

)

case class Feature(

id: Int,

properties: Map[String, string],

geometry: JObject

)

case class FeatureProperties(boroughcode: Int,borough: string)

features 中是一个 JSON 数组,对象是 feature 对象,feature 有一个 properties,properties 是一个 map,通过 properties 取出其 name,取出 borough 行政区的名字,将 JSON 对象转成 map,通过 map 取 borough 字段,用 JObject 表示 geometry 对象,FeatureProperties 代表 properties 中一个具体对象,可以使用 map 转为 FeatureProperties

将 JSON 拷入 idea 中,创建一个新的类,命名为 Features

{

"type"" : "Featurecollection"

"features" : [

{

"type" : "Feature" ,

"id" : 0,

"properties" : {

"boroughcode" : 5,

"borough" : "Staten Island" ,

"@id":"http:\/\/nyc.pediacities.com\/Resource\/Borough\/staten_Island"

},

"geometry" : {

"type" : "Polygon" ,

"coordinates" : [

[

[-74.050508064032471,40.566422034160816],[-74.049983525625748,40.566395924928273]]

]

]

}

}

]

}

第一个类型命名为 FeaturecollectionFeaturecollection 关注 features,创建具体执行对象,将 Feature 放入 list 中,有 type、id,properties,拿到  properties,可以使用 scala 继续表示类型,也可以使用 map,map 中有键值对,值对应其中的值,获取 geometry 对象,后续要使用 ESRI 直接解析字符串,接下来不需要解析字符串,转为 JObject

import org.json4s. 3sonAST.JObject

case class Featurecollection(features: List[Feature])

case class Feature(properties: Map[String,string], geometry: J0bject)

表示完类型后,将 JSON 字符串解析为目标类对象

提供 object,命名为 FeatureExtraction,提供 parseJson 方法,接收 Json 字符串,返回类型是 FeatureCollection,在方法中完成具体解析工作,导入一个formats隐式转换,JSON 转为 Object

Implicit 创建一个隐式参数,具体转换通过 read 转为 FeatureCollection 类型,将json 传入,read 方法导入一个包,read 方法返回一个对象,FeatureCollection,将 FeatureCollection 对象直接返回,在外部使用时,直接将 json 传入,给 FeatureCollection 类型,在类的范围内完成解析

features 也是一个工具类

object FeatureExtraction {

//完成具体的 JSON 解析工作

def parseson(json: string) : FeatureCollection = {

import org.json4s.jackson.Serialization.readl

//1.导入一个 formats 隐式转换

implicit val formats = Serialization.formats(NoTypeHints)

//2. JSON -> obj

val featurecollection = read[Featurecollection](json)

featurecollection

}

}

相关文章
|
7天前
|
JSON 安全 Swift
【Swift开发专栏】Swift中的JSON解析与处理
【4月更文挑战第30天】本文介绍了Swift中的JSON解析与处理。首先,讲解了JSON的基础,包括其键值对格式和在Swift中的解析与序列化方法。接着,展示了如何使用`Codable`协议简化JSON操作,以及处理复杂结构的示例。通过这些内容,读者能掌握在Swift中高效地处理JSON数据的方法。
|
8天前
|
分布式计算 DataWorks 关系型数据库
DataWorks产品使用合集之在DataWorks中,使用JSON解析函数将MySQL表中的字段解析成多个字段将这些字段写入到ODPS(MaxCompute)中如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
23 3
|
15天前
|
JSON 前端开发 Java
SpringBoot之JSON参数,路径参数的详细解析
SpringBoot之JSON参数,路径参数的详细解析
13 0
|
25天前
|
存储 JSON JavaScript
「Python系列」Python JSON数据解析
在Python中解析JSON数据通常使用`json`模块。`json`模块提供了将JSON格式的数据转换为Python对象(如列表、字典等)以及将Python对象转换为JSON格式的数据的方法。
34 0
|
28天前
|
Python
查看DataFrame信息案例解析
该文介绍了如何使用pandas库查看DataFrame信息。首先,导入pandas并创建一个字典,将字典转换为DataFrame,展示了一组包含“姓名”、“年龄”和“城市”列的数据。之后,通过调用DataFrame的info()方法,显示了数据框的详细信息,包括行数、列数及每列的数据类型,如:3行3列,数据类型为1个int64和2个object。
12 0
|
29天前
|
存储 JSON 数据格式
python读取同路径下的json文件,并解析
使用Python的`json`模块读取和解析JSON文件,首先导入json模块,再用`open()`结合`json.load()`读取文件内容到`data`。通过字典和列表语法访问JSON数据,如`data['name']`获取名字,`data['items']`获取列表,可循环遍历列表元素。
12 0
|
20小时前
|
分布式计算 Java API
Java8 Lambda实现源码解析
Java8的lambda应该大家都比较熟悉了,本文主要从源码层面探讨一下lambda的设计和实现。
|
1天前
|
算法 Java Go
ArrayList源码解析
ArrayList源码解析
7 1
|
1天前
|
存储 安全 Java
【HashMap源码解析(一)(佬你不来看看?)】
【HashMap源码解析(一)(佬你不来看看?)】
6 1
|
8天前
|
缓存 Java 开发者
10个点介绍SpringBoot3工作流程与核心组件源码解析
Spring Boot 是Java开发中100%会使用到的框架,开发者不仅要熟练使用,对其中的核心源码也要了解,正所谓知其然知其所以然,V 哥建议小伙伴们在学习的过程中,一定要去研读一下源码,这有助于你在开发中游刃有余。欢迎一起交流学习心得,一起成长。

推荐镜像

更多