数据格式(CSV,XML,JSON,YAML)

(1) 文本

定义固定的格式,各数据长度大多固定(某个字节到某个字节的代表一个数据),比如Log文件。比如:
引用
101rensanning36male 
102tom       30male 
103ruby      25female


大多作为数据序列化时,这样的数据也不需要换行:
引用
101rensanning36male  102tom       30male  103ruby      25female


(2) CSV: Comma-Separated Values

逗号分隔的数据,默认Excel打开。一般第一行是标题,第二行以后为数据,一般改行代表数据结束,如果数据中有空格/改行等特殊字符时需要用双引号括起来。多用于数据的导入导出。还有变形定义比如TSV,基于Tab分隔数据格式。常见文件:data.csv

no,name,age,gender
101,rensanning,36,male
102,tom,30,male
103,ruby,25,female


(3) XML: Extensible Markup Language

嵌套标记代表数据层次结构,多用于提供API(Web Service)、Java配置文件、Office文件(DOCX)等。如果数据中有特殊字符比如【&】【<】【>】等需要转成相应的参照实体。常见文件:pom.xml
<?xml version=”1.0″encoding=”utf-8″?>
<list>
  <customer>
    <no>101</no>
    <name>rensanning</name>
    <age>36</age>
    <gender>male</gender>
  </customer>

  <customer>
    <no>102</no>
    <name>tom</name>
    <age>30</age>
    <gender>male</gender>
  </customer>

  <customer>
    <no>103</no>
    <name>ruby</name>
    <age>25</age>
    <gender>female</gender>
  </customer>
</list>


(4) JSON: JavaScript Object Notation

大括号(方括号)代表数据层次结构,XML的替代品,多用于提供API(REST),配置文件、NoSQL数据库等。如果数据中有特殊字符比如【"】【\】【/】等,需要通过转义字符转义。支持string/number/true/false/null/array/object,常见文件:package.json

[
  {"no": 101, "name": "ruby", "age": 25, "gender": "female"},
  {"no": 102, "name": "tom", "age": 30, "gender": "male"},
  {"no": 103, "name": "rensanning", "age": 36, "gender": "male"}
]


(5) YAML: YAML Ain't Markup Language

使用空格缩进代表数据的层次结构,多用于配置文件。常见文件:application.yml

list:
  -  no: 101
     name: ruby
     age: 25
     gender: female
  -  no: 102
     name: tom
     age: 30
     gender: male
  -  no: 103
     name: rensanning
     age: 36
     gender: male


(6) 其他

.properties
Java程序用于配置程序参数,也用于存储多国语本地化文字,比如log4j.properties、messages.properties

.ini
Windows平台的配置文件,比如php.ini、mysql.ini

.conf
Linux平台的配置文件,大多有自己的特殊语法, 比如httpd.conf、nginx.conf

猜你喜欢

转载自rensanning.iteye.com/blog/2379083