创新路
我们一直在努力

谈JSON妙用(财务系统与收据系统的数据传输)更新至第三版

    由于财务系统需要自动获取收据系统中的收入数据,并且传输必须为单向,只能财务系统主动采集收据系统数据,所以需要定义一种规则及方式进行数据传输。

blob.png

    目前能够想到的方案有两种:

    1、财务系统直接读取收据系统数据库

    2、通过web接口传输格式化数据

    两种方案各有优点,同样也各有缺点。

    ******(啥字被替换了?)种直接读取数据库***直接简单,但后期收据系统数据库结构发生调整不可避免的也要修改财务系统,对后期维护造成一定难度。另外,财务系统访问收据系统数据时的权限范围界定也是不小的麻烦。从业务上来说,财务系统只应该访问收据系统的指定数据,不允许越权读取甚至操作数据,这样才能保证收据系统数据安全。

    第二种通过接口访问数据,目前是应用做多的手段。事先定义好数据格式(JSON)规范和接口调用参数,在收据系统端只输出预定义的数据及只接受预定义的操作,且可进行鉴权和数据检查。并且在收据系统数据库发生结构变化时,只需要修改收据系统的接口即可。对于财务系统来说完全无需调整,是透明无感的。这样既做到安全稳定,也利于后期维护。

    

    JSON 语法是 JavaScript 对象表示语法的子集。名称/值对组合中的名称写在前面(在双引号中),值对写在后面(同样在双引号中),中间用冒号隔开:

1
"firstName":"John"

    这很容易理解,等价于这条 JavaScript 语句:

1
firstName="John"

    JSON 简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构。

    1、对象:对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key:value,…}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。

    2、数组:数组在js中是中括号“[]”括起来的内容,数据结构为 ["java","javascript","vb",…],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。

经过对象、数组2种结构就可以组合成复杂的数据结构了。

    掌握了 JSON 格式之后,在 JavaScript 中使用它就很简单了。JSON 是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON 数据不需要任何特殊的 API 或工具包。

赋值给变量

    例如,可以创建一个新的 JavaScript 变量,然后将 JSON 格式的数据字符串直接赋值给它:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
var people = {
    "programmers": [{
        "firstName": "Brett",
        "lastName": "McLaughlin",
        "email": "aaaa"
    }, {
        "firstName": "Jason",
        "lastName": "Hunter",
        "email": "bbbb"
    }, {
        "firstName": "Elliotte",
        "lastName": "Harold",
        "email": "cccc"
    }],
    "authors": [{
        "firstName": "Isaac",
        "lastName": "Asimov",
        "genre": "sciencefiction"
    }, {
        "firstName": "Tad",
        "lastName": "Williams",
        "genre": "fantasy"
    }, {
        "firstName": "Frank",
        "lastName": "Peretti",
        "genre": "christianfiction"
    }],
    "musicians": [{
        "firstName": "Eric",
        "lastName": "Clapton",
        "instrument": "guitar"
    }, {
        "firstName": "Sergei",
        "lastName": "Rachmaninoff",
        "instrument": "piano"
    }]
};

    这非常简单;people包含前面看到的 JSON 格式的数据。但是,这还不够,因为访问数据的方式似乎还不明显。

访问数据

    尽管看起来不明显,但是上面的长字符串实际上只是一个数组;将这个数组放进 JavaScript变量之后,就可以很轻松地访问它。实际上,只需用点号表示法来表示数组元素。所以,要想访问 programmers 列表的第一个条目的姓氏,只需在 JavaScript 中使用下面这样的代码:

1
people.programmers[0].lastName;

    注意,数组索引是从零开始的。所以,这行代码首先访问 people变量中的数据;然后移动到称为 programmers的条目,再移动到第一个记录([0]);最后,访问 lastName键的值。结果是字符串值 “McLaughlin”。

    下面是使用同一变量的几个示例。

1
2
3
people.authors[1].genre  // Value is "fantasy"
people.musicians[3].lastName // Undefined. This refers to the fourth entry, and there isn't one
people.programmers[2].firstName // Value is "Elliotte"

    利用这样的语法,可以处理任何 JSON 格式的数据,而不需要使用任何额外的 JavaScript 工具包或 API。

修改数据

    正如可以用点号和方括号访问数据,也可以按照同样的方式轻松地修改数据:

1
people.musicians[1].lastName="Rachmaninov";

    在将字符串转换为 JavaScript 对象之后,就可以像这样修改变量中的数据。

换回字符串

    最终结论是,如果要处理大量 JavaScript 对象,那么 JSON 是一个好选择,这样就可以轻松地将数据转换为可以在请求中发送给服务器端程序的格式。

客官点个赞呗! (0)
分享到:

评论 抢沙发

评论前必须登录!

天府云博 - 做有态度的开发&运维&设计学习分享平台!

联系我们百度云主机