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 ...
随机推荐
- Cocos2d-x之Layer
| 版权声明:本文为博主原创文章,未经博主允许不得转载. Layer是处理玩家事件响应的Node子类.与场景不同,层通常包含的是直接在屏幕上呈现的内容,并且可以接受用户的输入事件,包括触摸,加速度 ...
- 使用JMail发送邮件
使用JMail做最简单的文本邮件发送: 第一步.下载JMail和JAF 第二步.解压放到本地classpath中 第三步.使用: public class MailService{ privat ...
- 微信小程序app.json文件常用全局配置
小程序根目录下的 app.json 文件用来对微信小程序进行全局配置,决定页面文件的路径.窗口表现.设置网络超时时间.设置多 tab 等. JOSN文件不允许注释,下面为了学习加上注释,粘贴需要的片段 ...
- JavaScript_DOM(文件对象模型)
DOM(文档对象模型)是针对 HTML 和 XML 文档的一个 API(应用程序编程接口). DOM 描绘了一个层次化的节点树,允许开发人员添加.移除和修改页面的某一部分. DOM1 级将 HTML ...
- cmd登录mysql、查所有的库、查所有的表、查表下的所有字段
一.设置好mysql的环境变量,cmd之后输入mysql -u root -p 输入password进入mysql 二.展示所有的库名show batabases: 三.选择一个库名use dem ...
- 高德地图的权限Activity代码
/** * */package com.amap.location.demo; import java.lang.reflect.Method;import java.util.ArrayList;i ...
- 【Luogu】【关卡2-16】线性动态规划(2017年10月)【还差三道题】
任务说明:这也是基础的动态规划.是在线性结构上面的动态规划,一定要掌握. P1020 导弹拦截 导弹拦截 P1091 合唱队形 老师给同学们排合唱队形.N位同学站成一排,音乐老师要请其中的(N-K)位 ...
- 64. 输出字节流(FileOutputStream)
IO分类: 按照数据流向分类: 输入流 输出流 按照处理的单位划分: 字节流:字节流读取的都是文件中的二进制数据,读取到的 ...
- vbs,修改文件名
一次性能测试记录,因为项目要批量上传文件,奈何文件有50 * 2个,然后系统效验文件名,要不停地修改,找了一些资料整理脚本如下: strFolder = "\\xxxx\2018198_数据 ...
- asp.net core Mvc 增删改查
1.创建项目 创建Data文件夹 创建实体类Students/cs public class Students { public Guid Id { get; set; } public string ...