关于json的理解

可能是写java时间太长了,满脑子都是面向对象。所以的东西都是对象。对于json一直都没有太感冒,只是把它当作一种数据格式,类似xml.

前段时间在思考一个问题,android与ios开发在调用后台服务,如何才能像java rpc服务调用一样方便。这个问题一直没有答案(我主要是开发后台架构,对于手机开发不太清楚)。但是我知道,http+json 能够解决前后端的调用,那么以http+json作为前面的那个问题的答案,个人感觉太普通了,不能说服自己,所以又让自己陷入困惑之中。

java rpc框架,在客户端与服务端之间调用屏蔽了其复杂性,对于一般的公司的业务开发,我个人理解它屏蔽了数据结构的理解过程。因为客户端使用,直接面对就是已定义好的java api(当然关于rpc的好处那多的多了,这里就不罗列了),这样可以加快开发速度。

在rpc开发中一个关键点,就是传输对象序列化与反序列化问题。对于前后端不同开发环境下,如何顺利的完成对象序列化与反序列化以及数据传输的呢?

前几天偶然间看了点javascript的关于对象的定义,让自己脑洞大开。javascript的对象定义其中有一种方式如下:

    var user={
            name:"zhu",
            age:18,
            sex:man
        };

定样就定义了一个javascript user对象.那么这个user对象的定义,就是一个json格式数据。

    {
        name:"zhu",
        age:18,
        sex:man
        }

对于上述内容,我们可以说它是javascript 对象,也是可以说它是 如下User类的一个实例,所以然后转换成json格式。

public class User{
    private String name,sex;
    private int age;
    // 省略getter,setter方法
}

现在我们可以这样描述后台数据向前台传递一个user的实例数据:
1. 在后台User Bean 进行实例化,得到一个user对象
2. user对象转化为json格式数据;
3. json格式数据,经http 传至前端;
4. 前端拿到这个json格式数据,无须获取java User 实体类,却依然参够使用相应的业务数据,即定义javascript 对象。

这样解决了我们想要解决的问题,前后台业务数据的传递,而且我们也不需要解决序列化与反序列化的问题了,问题完美解决。

这样看似很完美,但我认为不全对。对于上述内容,json格式数据它只是一个文本,并且充当了一个中间转换角色。这样完全忽略了json的定义json(javascript object notation)。因为json也是一个对象。那么从后台传述数据至前台的完整过程应当是:
1. 在后台User Bean 进行实例化,得到一个user对象
2. user对象转化为json对象;
3. json对象进行序列化为json格式的文本形式;
4. json格式的文本形式,经http 传至前端;
5. 前端拿到json格式的文本形式,反序列化为json对象然后使用,从而无须获取java User 类进行序列化。

解决序列化与反序列化是通过json对象完成,数据传递是通过json对象的文本形式完成,从而完美解决我之前的疑问。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值