用json进行数据传输

这几天做项目和前端的大神发生了一点争执,原因就在于json的格式上面。

于是我们就愤愤不平的开始争论,然后就去json的官网查资料,又去验证了我给他的json的字符串。

json的官网上是这么说的:

JSON is built on two structures:

  • A collection of name/value pairs. In various languages, this is realized as an object, record, struct, dictionary, hash table, keyed list, or associative array.
  • An ordered list of values. In most languages, this is realized as an array, vector, list, or sequence.

基本上对于Java来说,第一条指的就是对象,哈希表之类的,第二条指的是数组,向量或者序列等。

下面公布一下我给他的json格式(这个是修改过的,原版是错的):

[{"clwdList":[[1,1],[1,2],[1,3]],"hjwdList":[[1,0],[1,1],[1,2]],"dcdyList":[[2,0],[2,1],[2,2]],"maxTemp":3,"minTemp":1}]

我们主要纠结的就是最外面的那一层中括号了。

我使用Gson来对JavaBean进行处理,将其转换为Json格式的String字符串。

这里我贴一下我的JavaBean代码:

public class JsonWdTt
{
    private ArrayList<ArrayList> clwdList;
    private ArrayList<ArrayList> hjwdList;
    private ArrayList<ArrayList> dcdyList;
    private int maxTemp;
    private int minTemp;
    public int getMinTemp() {
        return minTemp;
    }
    public void setMinTemp(int minTemp) {
        this.minTemp = minTemp;
    }
    public int getMaxTemp() {
        return maxTemp;
    }
    public void setMaxTemp(int maxTemp) {
        this.maxTemp = maxTemp;
    }
    public ArrayList<ArrayList> getClwdList() {
        return clwdList;
    }
    public void setClwdList(ArrayList<ArrayList> clwdList) {
        this.clwdList = clwdList;
    }
    public ArrayList<ArrayList> getHjwdList() {
        return hjwdList;
    }
    public void setHjwdList(ArrayList<ArrayList> hjwdList) {
        this.hjwdList = hjwdList;
    }
    public ArrayList<ArrayList> getDcdyList() {
        return dcdyList;
    }
    public void setDcdyList(ArrayList<ArrayList> dcdyList) {
        this.dcdyList = dcdyList;
    }
    
}

实际上,我当时写这个的时候,考虑了他可能有多条这样的重复数据,于是最外面是一个ArrayList,接收的是JsonWdTt类型对象,由于ArrayList没有封装成JavaBean,所以生成的数组是没有名字的,但是实际上最终只接收到了一个对象,也就是说数组的长度为1,所以最外面一层就有奇葩的中括号了,但是这种写法是可以通过json格式测试的,所以我又变得有理有据,可以和他争上一番。总而言之,这样的写法还是不规范的,所以我最后又修改了一下,代码如下:

public class JsonWdTtList {
    private HashMap<String, JsonWdTt> jsonWdTtList;

    public HashMap<String, JsonWdTt> getJsonWdTtList() {
        return jsonWdTtList;
    }

    public void setJsonWdTtList(HashMap<String, JsonWdTt> jsonWdTtList) {
        this.jsonWdTtList = jsonWdTtList;
    }
}

用这个来封装所有单个的JsonWdTt对象,最后得到的Json字符串格式就是:

json_str为 {"jsonWdTtList":

{"jsonWdTt1":{"clwdList":[[1,1],[1,2],[1,3]],"hjwdList":[[1,0],[1,1],[1,2]],"dcdyList":[[2,0],[2,1],[2,2]],"maxTemp":3,"minTemp":1,"name":"jsonWdTt1"},

"jsonWdTt2":{"clwdList":[[1,1],[1,2],[1,3]],"hjwdList":[[1,0],[1,1],[1,2]],"dcdyList":[[2,0],[2,1],[2,2]],"maxTemp":3,"minTemp":1,"name":"jsonWdTt2"}}}

这样写就比较好了,如果我们想要在前端使用的话,需要这样写:

json_str.jsonWdTtList.jsonWdTt1.clwdList[0][0] //访问第一个对象的第一个二维数组的第一个元素,得到1

今天写的有点乱,因为写博客的时候又发现了问题,然后又修改,得到了这个版本。

总而言之,用javabean来生成json数据的时候一定要理清楚层次关系,不然很容易出现问题。

另外就是前后台一定要沟通好,不然就会出现我们这种问题,你给的不是他想要的,最后就吵起来了。

转载于:https://www.cnblogs.com/zydmayday/archive/2013/05/31/3109564.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值