D3JsDay07不懂资料格式,那就会我们曾相识,只是不合适—档案格式介绍

格式介绍

通常你的资料会是档案、API接口或是一个连结作为D3输入的资料,这边就以下常见的资料格式简单介绍一下

CSV逗号分隔值(Comma-Separated Values)

CSV是一种通用、简单的格式,档案以纯文字储存表格的资料,常见使用逗号来分隔资料,换句话说如果你用记事本的格式开启的话大概会长这样。

https://ithelp.ithome.com.tw/upload/images/20210922/201250953klfU0dHmO.png

如下图

https://ithelp.ithome.com.tw/upload/images/20210922/20125095k5JJeqMwW3.png

你也可以使用Microsoft Excel开启,它会自动帮你引入表格当中呈现

由於是以纯文字的方式储存,因此也会有编码上的差异,如果你用记事本档案→另存新档的时候,存档类型选择所有档案,在编码的地方可以看到有许多种类可供选择,顺带一提ANSI编码在语言不同的情况之下会有乱码出现的可能性,现在大部分使用UTF形式储存文字,目前常见使用的UTF-8也常用在html的meta资讯里面,另外如果用Excel打开的时候会出现乱码也可以尝试另存成具BOM的UTF-8来储存,提供给预开启软件自动识别是UTF的格式。

https://ithelp.ithome.com.tw/upload/images/20210922/20125095JsJFreVLWf.png

其他更多资讯可以参见维基百科
CSV维基百科

JSON JavaScript物件表示法(JavaScript Object Notation)

起先由Douglas Crockford设计和构想的轻量级资料交换格式,虽然JSONJavaScript的子集,但其实目前很多程序语言都支援JSON的生成和解析,以下列出他们所拥有的资料型态

资料型态
object物件 {}
array阵列 []
string字串 ""
number数值 0-9的整数、小数、负数
boolean 布林值 true 或 false
null 空值 null

以下作为JSON范例

{
  "item":{
      "name": "香蕉",
      "catalog": "水果",
      "price": 100,
    }
}

可以发现与Javascript的物件可以储存的内容有着十分类似的样貌,但是Javascript的物件可以储存函式,然而JSON仅是储存资料因此不能储存函式,另外JSON在资料交换的时候必须使用UTF-8的格式,也可以使用Unicode16进位跳脱字元序列,若你在网路上下载的JSON资料以文字档打开的时候的文字类似像\u0041这样类型的话,并不是出现乱码或是错误的状况,而使它使用了十六进位的跳脱字元序列,你在console.log栏位的话就能看出原本的字符。
如下图

https://ithelp.ithome.com.tw/upload/images/20210922/20125095VuxhnecXHf.png

另外在网路上找到相对应的字元编码可以转译文字,参照下列网址

UnicodePlus

XML可延伸标记式语言(Extensible Markup Language)

XML是一种标记式语言,他长得有点类似HTML,这里尝试着写一个XML的范例

<?xml version="1.0"?>
<item>
  <name>香蕉</name>
  <catalog>水果</catalog>
  <price>100</price>
</item>

由於它是从SGML标准通用标记式语言(Standard Generalized Markup Language)所衍生出的子集,算是比较早期拿来做资料交换的格式,和JSON类似的地方一样可以在标签内涵盖其他标签,拥有阶层的概念,这边主要会稍微和JSON做对应,由於可以看到XML比起JSON多了标头<item>和标尾</item>,因此整个档案所占用的空间也较少,也因为如此所以JSON目前是更加广泛和流行。

这边仅提出较常见的格式,其他还有像是tsvdsv是类似csv一些格式可以参见维基百科介绍

DSV维基百科
TSV维基百科


<<:  Day–22 快速认识Excel SUM家族

>>:  [Day 8] Reactive Programming - Reactor(FLUX & MONO) Part 2

Day30 - 逆向 WannaCry 病毒,想哭病毒?

恶名昭彰的 WannaCry 让 Windows 使用者欲哭无泪。今天来逆向 WannaCry,看这...

Golang-Channel & Goroutine-基础篇

说到Go最精华的部分就是concurrency的部分了 包含的范围蛮广的,当初在看的时候也是看得满头...

[DAY17]跟 Vue.js 认识的30天 - Vue 过渡(转场)及动画效果下篇(`<transition-group>`) - 多个元素的过渡及列表过渡

这一篇就来接续写完 Vue 过渡及动画的内容啦!希望能顺利写完我的 Vue 笔记。 多个元素的切换转...

轻松小单元 - 范围要多广

您说的核心系统在哪? 如果单看法规内容,可能会觉得防护措施写的简单,但要全部都纳入也很吓人。对於这点...

Day22:今天来聊一下如何用Ghost Eye来取得Web Server资讯

通过执行Web Server Footprinting,我们可以收集到有价值的系统资讯 例如帐户资讯...