JSON数组对象和JSON字符串的转化,map和JSON对象之间的转化
前后端数据传输的原理解析:
参考博客:https://blog.csdn.net/u010900754/article/details/51395529
因为前端(常用的是js),语言是一种弱类型语言,后端假设用的是java,所以这两种语言之间就没有完全对应的数据类型,这在传数据的时候,就会需要一个中间的规则或者协议,来规范数据类型。
一般会使用JSON来将数据打包之后,作为中间媒介,然后分别在前端和后端转化成相应的数据类型。
再来看为甚是字符串类型的,那是因为前后端的通信都是通过网络层进行(简单点的有http协议),网络层不管接受到什么数据类型,都会看做是字符串。
接下来就是,前后端对数据的解析:
这种用法包括前端和后端:
前端:
1. 转化为JSON对象方便操作(将json的字符串转化为js中的对象)
var jsonObj = JSON.parse(str);
得到的是一个json数组对象(js中对应的数据对象),可以通过
for (var key in jsonObj){}
来遍历数组中的每个对象,其中key表示键,jsonObj[key]表示key所对应的值。
问题记载:
在项目中遇到使用这种遍历方式的时候,在最后会出现一个key=“remove”,value=“undefined”的键值对(业务逻辑中并没有),然后换成遍历数组的方式就不会出现这种问题了:
//jsonObj是一个json对象组成的数组,每个json对象由多个键值对组成
for (var i = ; i < jsonObj.length; i++) {
console.log(jsonObj[i].key); //遍历每个json对象中的某一个字段
}
2. 转化为字符串(将js对象转化成一个json的string类型)
var jsonStr = JSON.stringify(jsonObj) ---------->(常用于Ajax中,将返回的对象数据,转化为字符串)
后端:需要用到阿里的fastjson包(其他的用法可以参考博客:https://blog.csdn.net/zknxx/article/details/52281220)
在java中,有JSONObject和JSONArray两个对象,转string就用它们的toString()函数;转对象,就用toBean()和toArray()函数。需要注意的是JSONObject必须是string的键。
3. map对象转化为 json字符串对象
String json=JSON.toJSONString(map);
4. json对象转化为map对象
Map map = JSON.parseObject(json);
其他问题搜集:
1、https://blog.csdn.net/AinUser/article/details/82226738(json格式,key值一定要用 双引号 包起来)
2、https://blog.csdn.net/a_bang/article/details/51847810(给key添加双引号的方式,没试^o^)
问题记载:
后端传来的数据是一般Java格式的对象列表,在传到前端进行解析的时候,怎么也解析不对,上面的两条就是遇到的问题。
最后的解决方案是:
在后端就将数据转化为JSON格式(需要导入net.sf.json-lib包,如果在后端是List,则需要JSONArray.fromObject转化成js数组,因为在前端解析的是JSON字符串,所以还需要将JSONArray使用toJSONString转化为字符串),
在前端正常解析即可(JSON.parse)。
--------------------------这里分割线------------------------------
前期在做项目的过程中,遇到了不少类型的前后端数据传输和转化的问题,可能还会有理解不到位的地方,
所以,文章经过一次又一次的编辑和修改,希望对自己和遇到问题的各位能有帮助。
JSON数组对象和JSON字符串的转化,map和JSON对象之间的转化的更多相关文章
- [原创]java WEB学习笔记59:Struts2学习之路---OGNL,值栈,读取对象栈中的对象的属性,读取 Context Map 里的对象的属性,调用字段和方法,数组,list,map
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- jsoncpp构造json字符串和json数组
jsoncpp构造json字符串和json数组 参考文章:Jsoncpp的简单使用 下载json文件夹放在c++项目的include目录下,在CMakeLists中include进去,然后就可以在代码 ...
- JSON 数组格式
JSON 数据格式 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.JSON采用完全独立于语言的文本格式,这些特性使JSON成为理想的数据交换语言.易于人 ...
- js处理ajax返回的json数组
一.json对象和json数组的区别 jsonObject = {} # json对象 jsonArray=[{},{}] # json数组 二.数据处理 前台接收到后台传过来的json数组实际上是一 ...
- Json数组基础知识
1.对象是一个无序的“‘名称/值’对”集合. (1)一个对象以“{”(左括号)开始,“}”(右括号)结束. (2)每个“名称”后跟一个“:”(冒号): (3)“‘名称/值’ 对”之间使用“,”(逗号) ...
- jquery下json数组的操作用法实例
jquery下json数组的操作用法实例: jquery中操作JSON数组的情况中遍历方法用的比较多,但用添加移除这些好像就不是太多了. 试过json[i].remove(),json.remove( ...
- highCharts怎样实现json数组数据的图形展示
昨天花了一天的时间学习了一下highcharts.主要的内容差点儿相同都看了一遍,然后试着写了一个完整的demo,期间可谓百转千回.费了不少功夫.终于还是实现了我所想要的效果图,接下来我将怎样实现统计 ...
- json数组的序列化和反序列化json数组的序列化和反序列化
如题,我就不多说了,自己看代码的,很好理解 using System; using System.Collections.Generic; using System.Web; using System ...
- python json-json.loads()函数中的字符串需要是严格的json串格式,不能包含单引号
先看下json的dumps()和loads()函数的定义 json.dumps():将一个Python对象编码成JSON字符串.把字典对象转换成json串 json.loads():将JSON格式字符 ...
- Go语言高级特性总结——Struct、Map与JSON之间的转化
Struct与Map之间互相转换 // Struct2Map convert struct to map func Struct2Map(st interface{}) map[string]inte ...
随机推荐
- oninput 事件 比较angular张的 ng-model指令 和 Vue中的 v-model指令
oninput 事件在用户输入时触发. 该事件在 <input> 或 <textarea> 元素的值发生改变时触发. 提示: 该事件类似于 onchange 事件.不同之处在于 ...
- HBase 入门之数据刷写(Memstore Flush)详细说明
接触过 HBase 的同学应该对 HBase 写数据的过程比较熟悉(不熟悉也没关系).HBase 写数据(比如 put.delete)的时候,都是写 WAL(假设 WAL 没有被关闭) ,然后将数据写 ...
- 【react】---redux-actions的基本使用---【巷子】
一.安装 cnpm install --save redux-actions 二.为什么使用 redux-actions reducer使用switch case语句进行action类型判断,当act ...
- Git操作思维导图
转自:https://blog.csdn.net/mynameishuangshuai/article/details/51657324
- 转 python3 读取 ini配置文件
在代码中经常会通过ini文件来配置一些常修改的配置.下面通过一个实例来看下如何写入.读取ini配置文件. 需要的配置文件是: 1 [path] 2 back_dir = /Users/abc/Pych ...
- 33-python基础-python3-列表插入元素-insert()方法-append()方法-extend()方法
1-insert()方法 insert()方法可以在列表任意下标处插入一个值. insert()方法的第一个参数是新值的下标,第二个参数是要插入的新值. 2-append()方法 调用 append( ...
- docker--环境搭建
我的电脑是win10,虽然现在win10开始也支持docker,但在linux机器会合适些,所以我先用VMware创建一个linux虚拟机--Centos7 安装虚拟机不多说,现在开始安装docker ...
- 装完某些软件之后IE主页被https://www.hao123.com/?tn=93453552_hao_pg劫持
今天重装电脑,装完某些软件之后发现IE主页被https://www.hao123.com/?tn=93453552_hao_pg劫持,然后百度各种解决方法都没用,甚至是修改注册表依然没啥用 最后忽然看 ...
- MyBatis笔记二:配置
MyBatis笔记二:配置 1.全局配置 1.properites 这个配置主要是引入我们的 properites 配置文件的: <properties resource="db.pr ...
- MySQL--分组数据
1.数据分组 #连接数据库 use newschema; #查看表中数据 select *from products: #返回供应商1003提供的产品数目 ; 2.创建分组 select vend_i ...