zoukankan      html  css  js  c++  java
  • 认识json,详解JsonConfig

    说到json 初学者很迷茫,不知json怎么为何物,以及怎么用。我简单说下我的了解

    既然用了json 我们就要知其然也知其所以然。下面有几个疑问

    1.为什么要用json?也就是json 的优势

    2.我们平时说的json 字符串和json对象的区别是什么?

    3.为什么前后台广泛用json来传递数据?

    答:1. 既然用json 肯定是为了方便使用,那么方便谁使用,JSON的全称是”JavaScript Object Notation” 那肯定是方便前端使用。

    后端有类,类里面有属性,比如类A

    public class A{
    private String name;
    private int age;
    }

    它有两个属性,通过A.name 就可以得到A的name 很方便,那么我想在前端也用到这个属性啊,这样json字符串和json对象就产生了。

    2、3. 用字符串为了前后台传递数据方便,用对象是为了前端使用方便   

    举例子

    String字符串: var str1 = '{ "name": "cxh", "sex": "man" }'; 

    JSON对象:var str2 = { "name": "cxh", "sex": "man" };

     既然有json对象了那么还为什么需要json字符串呢?  json字符串是为了在前后台方便传输用的,这也就是json逐渐代替xml 进行传输的原因,它几乎没有任何标记,前端接到后处理也很方便。

    (1) JSON.parse() 方法将数据转换为 JavaScript 对象。

    例如我们从服务器接收了以下数据:{ "name":"runoob", "alexa":10000, "site":"www.runoob.com" }

    我们使用 JSON.parse() 方法处理以上数据,将其转换为 JavaScript 对象:var obj = JSON.parse('{ "name":"runoob", "alexa":10000, "site":"www.runoob.com" }');

    转换过后我们可以通过obj.name 获取里面的值。

    (2)我们可以使用 JSON.stringify() 方法将 JavaScript 对象转换为字符串。

    例如我们向服务器发送以下数据:

    var obj = { "name":"runoob", "alexa":10000, "site":"www.runoob.com"};

     我们使用 JSON.stringify() 方法处理以上数据,将其转换为字符串:var myJSON = JSON.stringify(obj);

    myJSON 为字符串。

    我们可以将 myJSON 发送到服务器:通过ajax发送到后端

    ajax的 dataType 属性的作用

    ajax的dataType属性,我一直以为是为了约束"发送给服务器的data"的数据类型的,今天再一看,原来是为了约束服务器的返回值类型,而data的数据类型ajax定死了为Object或String... ...

     2018年4月17日,一直以来用json 返回数据时偶尔会遇到  There is a cycle in the hierarchy !!这个讨厌的问题。

    也就是类与类之间在互相引用的时候,返回前台解析的时候会报错。借鉴  Ha_Pipi的博客  

    JsonConfig jsonConfig = new JsonConfig();  //建立配置文件
            jsonConfig.setExcludes(new String[]{"shiffb"}); //此处是亮点,只要将所需忽略字段加到数组中即可
            jsonConfig.setIgnoreDefaultExcludes(false);  //设置默认忽略
            jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);
            jsona.addAll(list, jsonConfig);

    能够完美解决。留下一个疑问,DTO的目的是不是就是为了解决这个问题的呢??

     

  • 相关阅读:
    ReactJS入门学习一
    js控制html5 【video】标签中视频的播放和停止
    CentOS中vsftp安装与配置
    linux 添加多个网段
    js图片预加载后触发操作
    nodejs在后台运行
    asp.net环境搭建
    aspx aspx.cs
    linux 添加静态ip dns
    kali ssh服务开启登录
  • 原文地址:https://www.cnblogs.com/ScarecrowAnBird/p/8671092.html
Copyright © 2011-2022 走看看