说到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的目的是不是就是为了解决这个问题的呢??

认识json,详解JsonConfig的更多相关文章

  1. JSON详解(转)

    JSON详解 JSON的全称是”JavaScript Object Notation”,意思是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式.XML也是一种数据交换格 ...

  2. JSON详解(转载)

    JSON详解 阅读目录 JSON的两种结构 认识JSON字符串 在JS中如何使用JSON 在.NET中如何使用JSON 总结 JSON的全称是”JavaScript Object Notation”, ...

  3. javaScript系列:JSON详解

    JSON详解   JSON的全称是”JavaScript Object Notation”,意思是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式.XML也是一种数据交 ...

  4. Spring Boot 之使用 Json 详解

    Spring Boot 之使用 Json 详解 简介 Spring Boot 支持的 Json 库 Spring Web 中的序列化.反序列化 指定类的 Json 序列化.反序列化 @JsonTest ...

  5. 问题:JsonConvert;结果:JSON详解

    JSON详解 JSON的全称是”JavaScript Object Notation”,意思是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式.XML也是一种数据交换格 ...

  6. JSON详解+ C# String.Format格式说明+ C# ListView用法详解 很完整

    JSON详解 C# String.Format格式说明 C# ListView用法详解 很完整

  7. c++ json 详解

    一. 使用jsoncpp解析json Jsoncpp是个跨平台的开源库,首先从http://jsoncpp.sourceforge.net/上下载jsoncpp库源码,我下载的是v0.5.0,压缩包大 ...

  8. cookie、json详解

    什么是cookie 1.cookie是存储于访问者计算机中的变量2.cookie是浏览器提供的一种机制3.可以由js控制(设置.读取.删除)4.cookie可以实现跨页面全局变量可以跨越同域名下多个网 ...

  9. JSON详解

    首先要知道JSON是一种轻量级的数据格式,不是一种编程语言,因此其他语言也可以使用. 一.JSON语法 JSON语法可以表现为下面三种值: 1.简单值:字符串.数值.布尔值和null,如"h ...

随机推荐

  1. python开发接口

    享一段代码,开发了3个接口:            1.上传文件            2.查看所有文件            3.下载文件 使用python开发,需要安装flask模块,使用pip ...

  2. centOS+DJango+mysql_nginx部署流程记录

    安装Python3.6.2: https://www.jianshu.com/p/7a76bcc401a1 安装MySQL: https://www.cnblogs.com/luohanguo/p/9 ...

  3. 1 Struts2基本概述及其入门

    什么是Struts2? webwork+Struts1 一个基于MVC设计模式的web层框架,本质上相当于一个Servlet.. 在MVC设计模式中,Struts2作为控制器Controller来建立 ...

  4. 数据库转换Mysql-Oracle之建表语句

    Mysql建库语句(导出的): DROP TABLE IF EXISTS `tablename`; CREATE TABLE `tablename` ( `C_DI_CDE` varchar(40) ...

  5. Jquery 分页案例

    Jquery    分页案例 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /& ...

  6. 使用eclipse搭建springboot项目pom.xml文件第一行报错(Maven Configuration Problem)

    今天在https://start.spring.io/上搭建了一个2.1.5版本的springboot项目,但是把它导入后,pom.xml第一行报错了,查看Problems发现下面的错误 百度后发现方 ...

  7. [经验] Linux 怎么连接 Xshell?

    (1) 首先, 你要先有一个可以正常运行的 Linux 系统, 当然一般情况下我们是把这个系统放在虚拟机里的, 我所使用的是 ubuntu-18.04.2-live-server-amd64.iso ...

  8. 设计模式课程 设计模式精讲 2-3 UML类图讲解自上而下

    1 内容简析(易错加粗) 2 uml类图展示 1 内容简析(易错加粗) 1.1 设计模式中的对象关系 依赖关系 虚线箭头 组合关系 实心菱形 聚合关系 空心菱形(想象成盘子,盛东西,盘子的多,另一方少 ...

  9. C语言的常用的数据类型有哪些_所占字节分别是多少

    整型 整形打印使用%d short:短整型,占16位,2个字节 int:占32位,4个字节 long:长整型,占4个字节,本来意思比int更多,但是目前来看基本都是和int一样 浮点型 浮点型计算会影 ...

  10. 在 aws emr 上,将 hbase table A 的数据,对 key 做 hash,写到另外一张 table B

    先 scan 原表,然后 bulkload 到新表. 采坑纪录1. bulkload 产生 hfile 前,需要先对 hash(key) 做 repartition,在 shuffle 的 read ...