欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

什么是JSON?

程序员文章站 2024-01-30 16:26:58
...

1.JSON: JavaScript Object Notation(JavaScript 对象表示法)
JSON 是存储和交换文本信息的语法。类似 XML。
JSON 比 XML 更小、更快,更易解析。
JSON 是轻量级的文本数据交换格式。
JSON 独立于语言:JSON 使用 Javascript语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。 目前非常多的动态(PHP,JSP,.NET)编程语言都支持JSON。JSON 具有自我描述性,更易理解。
Json实例

{
    "sites": [
    { "name":"淘宝" , "url":"www.taobao.com" }, 
    { "name":"google" , "url":"www.google.com" }, 
    { "name":"百度" , "url":"www.baidu.com" }
    ]
}

这个 sites 对象是包含 3 个站点记录(对象)的数组。
2.JSON - 转换为 JavaScript 对象
JSON 文本格式在语法上与创建 JavaScript 对象的代码相同。
由于这种相似性,无需解析器,JavaScript 程序能够使用内建的 eval() 函数,用 JSON 数据来生成原生的 JavaScript 对象。
3.JSON 使用 JavaScript 语法
因为 JSON 使用 JavaScript 语法,所以无需额外的软件就能处理 JavaScript 中的 JSON。
通过 JavaScript,您可以创建一个对象数组,并像这样进行赋值:
实例
JSON数据格式:主要由对象 { } 和数组 [ ] 组成:
其中对象包括键值对(属性:属性值){key: value},value 可为 str,num,list,obj。取值使用 objcet.key
{key: value, key2:value2,} 键:值用冒号分开,对间用,连接数组包含元素:num,str,list,objcet 都可以,利用索引访问 [index],用 . 连接各个值:

var stu = {"student":           //stu 对象包含student的key,值为一个数组
[                                     //数组的每一个值为一个具体的学生对象
{"name": "Tom","Grade":1, "age":11, "gender": "M"},     //学生对象的键为名字,值为对应属性
{"name": "Jerry", "Grade":1, "age":10, "gender": "M"}       //每个属性对应的是一个key,value对
],
"classroom": {"class1": "room1", "class2": "room2"}         //对象的值,嵌套对象
};

读取数据:

document.write(stu.student[1].name);     // 输出第二个学生名
document.write(stu.student[0].age);      // 输出第一个学生年龄
document.write(stu.classroom.class1);    // 输出 classroom 的 class1 值
document.write(stu["classroom"].class2); // 也可用中括号键访问对象值

3.JSON文件可以进行与XML、CSV、YAML格式文件互转。
实例:
JSON源文件:

{
  "sites": {
    "site": [
      {
        "id": "1",
        "name": "淘宝",
        "url": "www.taobao.com"
      },
      {
        "id": "2",
        "name": "百度",
        "url": "www.baidu.com"
      },
      {
        "id": "3",
        "name": "Google",
        "url": "www.google.com"
      }
    ]
  }
}

格式转换:
A. XML文件

<?xml version="1.0" encoding="UTF-8" ?>
<sites>
    <site>
        <id>1</id>
        <name>淘宝</name>
        <url>www.taobao.com</url>
    </site>
    <site>
        <id>2</id>
        <name>百度</name>
        <url>www.baidu.com</url>
    </site>
    <site>
        <id>3</id>
        <name>Google</name>
        <url>www.google.com</url>
    </site>
</sites>

B. CSV文件

id,name,url
1,淘宝,www.taobao.com
2,百度,www.baidu.com
3,Google,www.google.com

C. YAML文件

sites: 
 site: 
  - 
   id: 1
   name: "淘宝"
   url: "www.taobao.com"
  - 
   id: 2
   name: "百度"
   url: "www.baidu.com"
  - 
   id: 3
   name: Google
   url: "www.google.com"