• 关于JSON


    JSON语法

    JSON 的语法主要有以下5点:

    • 数组(Array)用方括号(“[]”)表示。
    • 对象(Object)用大括号(”{}”)表示。
    • 名称/值对(name/value)之间用冒号(”:”)隔开。
    • 名称(name)置于双引号中,值(value)有字符串、数值、布尔值、null、对象和数组。
    • 并列的数据之间用逗号(“,”)分隔

    验证自己的 JSON 格式是否正确,可以在:http://json.cn/ 验证。如有错误会有提示

    JSON解析

    在 JavaScript 中,有两个方法与此相关:JSON.stringify 和 JSON.parse。其中:

    • JSON.stringify 用于将 JavaScript 对象转换成 JSON 字符串。
    • JSON.parse 用于将 JSON 字符串转换成 JavaScript 对象。

    具体用法如下:

    1 var str = '{"name": "Geoff Lui","age": 26,"friends":["Lucy","Lily","Gwen"]}';
    2 
    3 var obj = JSON.parse(str);  //返回一个 JavaScript 对象
    4 
    5 console.log(obj);
    6 
    7 var jsonstr = JSON.stringify(obj);  //返回一个 JSON 字符串
    8 
    9 console.log(jsonstr);

    d3.json 的实质就是通过 Ajax 请求服务器的数据,然后用 JSON.parse() 将返回的字符串转换成 JavaScript 对象的结果

    GeoJSON和TopoJSON

    GeoJSON 和 TopoJSON 都是是符合 JSON 语法规则的两种数据格式,只不过对其名称进行了规范,专门用于表示地理信息

    GeoJSON 的最外层是一个单独的对象(object)。这个对象可表示:

    • 几何体(Geometry)。
    • 特征(Feature)。
    • 特征集合(FeatureCollection)。

    最外层的 GeoJSON 里可能包含有很多子对象,每一个 GeoJSON 对象都有一个 type 属性,表示对象的类型,type 的值必须是下面之一。

    • Point:点。
    • MultiPoint:多点。
    • LineString:线。
    • MultiLineString:多线。
    • Polygon:面。
    • MultiPolygon:多面。
    • GeometryCollection:几何体集合。
    • Feature:特征。
    • FeatureCollection:特征集合。

    如果 type 的值为 GeometryCollection(几何体集合),那么该对象必须有变量 geometries,其值是一个数组,数组的每一项都是一个 GeoJSON 的几何对象。例如:

    {
        "type": "GeometryCollection",
        "geometries": [
            {
                "type": "Point",
                "coordinates": [100, 40]
            },
            {
                "type": "LineString",
                "coordinates": [ [100, 30], [100, 35] ]
            }
        ]
    }

    如果 type 的值为 Feature(特征),那么此特征对象必须包含有变量 geometry,表示几何体,geometry 的值必须是几何体对象。此特征对象还包含有一个 properties,表示特性,properties 的值可以是任意 JSON 对象或 null。例如:

    {
        "type": "Feature",
        "properties": {
            "name": "北京"
        },
        "geometry": {
            "type": "Point",
            "coordinates": [ 116.3671875, 39.977120098439634]
        }
    }

    如果 type 的值为 FeatureCollection(特征集合),则该对象必须有一个名称为 features 的成员。features 的值是一个数组,数组的每一项都是一个特征对象。

    TopoJSON 是 GeoJSON 按拓扑学编码后的扩展形式,是由 D3 的作者 Mike Bostock 制定的。相比 GeoJSON 直接使用 Polygon、Point 之类的几何体来表示图形的方法,TopoJSON 中的每一个几何体都是通过将共享边(被称为arcs)整合后组成的。

    TopoJSON 消除了冗余,文件大小缩小了 80%,因为:

    • 边界线只记录一次(例如广西和广东的交界线只记录一次)。
    • 地理坐标使用整数,不使用浮点数。

    在线生成 GeoJSON:http://geojson.io/

    简化、转换 GeoJSON 和 TopoJSON:http://mapshaper.org/

  • 相关阅读:
    centos7的网络设置
    day1学习
    举例讲解Linux系统下Python调用系统Shell的方法
    Python引用模块和查找模块路径
    详解Python中的循环语句的用法
    [cf1566H]Xorquiz
    [luogu5180]支配树
    [atAGC055D]ABC Ultimatum
    [cf1552H]A Serious Referee
    [gym102538H]Horrible Cycles
  • 原文地址:https://www.cnblogs.com/Hyacinth-Yuan/p/8093316.html
Copyright © 2020-2023  润新知