JSON数据格式转换(StringBuffer拼接json串)大全及用法
JSON是基于{“键”:“值”} 对的存在,当然我们也可以多层嵌套,对于刚刚学习JSON十分便捷而且很好用,很容理解。话不多说直接上代码:
public String queryPostInterface(String theNewInterface) throws Exception {
JSONObject jsonObject = new JSONObject(theNewInterface);
String postId = AESUtil.Decrypt(jsonObject.getString("post_id"), cKey);//帖子ID
StringBuffer sb = new StringBuffer();
int size = 0;//定义一个变量用来接收循环多少次(共多少条数据)
if(theNewInterface!=null && !"".equals(theNewInterface)){
if (postId != null && !"".equals(postId)) {
//获取帖子信息 tieba(具体业务自己查询这里只是个例子)
TyPostInfo postInfo = tyPostBarService.selpostInfoById(Long.valueOf(postId));
//查询帖子回复信息(具体业务自己查询这里只是个例子)(<TyPostbarReply>泛型是个对象)
List<TyPostbarReply> replies = tyPostBarService.selectHuiHuid(Long.valueOf(postId));
if (replies != null) {
sb.append("{\"stateCode\": " + 1 + ","); //JSON串的开头信息
sb.append(" \"message\": \"成功\",");
sb.append("\"replayList\": [");//JSON结果集
for (TyPostbarReply reply : replies) { //循环结果集,进行拼接
//获取用户ID uuid
Long userId = iUserInfoService.getIdByUserUUID(reply.getReplyUserid().toString()); //select UO.updateUserId from USER_INFO UO where id=?
UserInfoVo usesr = tyPostBarService.selectById_yb(userId);
String photo = "";
if (usesr.getUserPhoto() != null) {
photo = usesr.getUserPhoto().substring(0, usesr.getUserPhoto().lastIndexOf("."));
} else {
photo = "";
}
sb.append("{\"userPhoto\": \"" + photo.toString() + "\",");//用户照片
sb.append("\"userName\": \"" + usesr.getRealName().toString() + "\",");//用户姓名
sb.append("\"floor\": \"" + reply.getFloorNum().toString() + "\",");//楼层数
sb.append("\"barID\": \"" + postInfo.getPostBarId().toString() + "\",");//贴吧Id
sb.append("\"postID\": \"" + postInfo.getId().toString() + "\",");//帖子id
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sb.append("\"createTime\": \"" + sdf.format(reply.getCreateTime()) + "\",");//创建时间
sb.append("\"content\": \"" + reply.getReplyContent().toString() + "\"");//评论内容
size = size + 1;//循环一次+1
if (size < replies.size()) {//这里需要注意下。如果循环总条数小于查出来的总条数每次循环完毕一次都在 “ },” 加上“,” 否则不加 “ ,”
sb.append("},");
} else {
sb.append("}");
}
}
sb.append("]}"); //最后在拼接最外层(在循环外部)
}
} else {
sb.append("{\"stateCode\":" + 0 + ",");
sb.append("\"message\":\" 传入参数为空\"}");
}
}else{
sb.append("{\"stateCode\":" + 0 + ",");
sb.append("\"message\":\" 传入参数为空\"}");
}
return AESUtil.Encrypt(sb.toString(), cKey);
}
}
最后就会拼接成JSON串,具体业务具体分析,这只是一个方发,一个思想,编程重在思想!!!
以上是最基本的拼接方式下面看下json用法:
1.String转JSONObject
(1)json-lib(即net.sf.json.JSONObject)
String jsonMessage = "{\"语文\":\"88\",\"数学\":\"78\",\"计算机\":\"99\"}";
JSONObject myJson = JSONObject.fromObject(jsonMessage);
(2).用阿里巴巴的fastjson的jar包
String str = "{\"baid\":null,\"32d3:\":\"null\",433:\"0x32\",032:\"ju9fw\"}";
com.alibaba.fastjson.JSONObject jm = com.alibaba.fastjson.JSON.parseObject(str);
2.String转JSONArray
String jsonMessage = "[{'num':'成绩', '外语':88, '历史':65, '地理':99, 'object':{'aaa':'1111','bbb':'2222','cccc':'3333'}}," +
"{'num':'兴趣', '外语':28, '历史':45, '地理':19, 'object':{'aaa':'11a11','bbb':'2222','cccc':'3333'}}," +
"{'num':'爱好', '外语':48, '历史':62, '地理':39, 'object':{'aaa':'11c11','bbb':'2222','cccc':'3333'}}]";
JSONArray myJsonArray = JSONArray.fromObject(jsonMessage);
System.out.println(myJsonArray);
3.JSON可以有两种格式,一种是对象格式的,另一种是数组对象,
{"name":"JSON","address":"北京市西城区","age":25}//JSON的对象格式的字符串
[{"name":"JSON","address":"北京市西城区","age":25}]//数据对象格式
在前端和后端进行数据传输的时候这种格式也是很受欢迎的,后端返回json格式的字符串,前台使用js中的JSON.parse()方法把JSON字符串解析为json对象,然后进行遍历,供前端使用。
Student stu=new Student();
stu.setName("JSON");
stu.setAge("23");
stu.setAddress("北京市西城区");
//3.1、使用JSONObject
JSONObject json = JSONObject.fromObject(stu);
//3.2、使用JSONArray
JSONArray array=JSONArray.fromObject(stu);
String strJson=json.toString();
String strArray=array.toString();
System.out.println("strJson:"+strJson);
System.out.println("strArray:"+strArray);
结果:
strJson:{"address":"北京市西城区","age":"23","name":"JSON"}
strArray:[{"address":"北京市西城区","age":"23","name":"JSON"}]
4.JSON字符串转java对象
//定义两种不同格式的字符串
String objectStr="{\"name\":\"JSON\",\"age\":\"24\",\"address\":\"北京市西城区\"}";
String arrayStr="[{\"name\":\"JSON\",\"age\":\"24\",\"address\":\"北京市西城区\"}]";
//4.1、使用JSONObject
JSONObject jsonObject=JSONObject.fromObject(objectStr);
Student stu=(Student)JSONObject.toBean(jsonObject, Student.class);
//4.2、使用JSONArray
JSONArray jsonArray=JSONArray.fromObject(arrayStr);
//获得jsonArray的第一个元素
Object o=jsonArray.get(0);
JSONObject jsonObject2=JSONObject.fromObject(o);
Student stu2=(Student)JSONObject.toBean(jsonObject2, Student.class);
System.out.println("stu:"+stu);
System.out.println("stu2:"+stu2);
结果: stu:Student [name=JSON, age=24, address=北京市西城区]
stu2:Student [name=JSON, age=24, address=北京市西城区]
从上面的代码中可以看出,使用JSONObject可以轻松的把JSON格式的字符串转化为java对象,但是使用JSONArray就没那么容易了,因为它有“[]”符号,所以我们这里在获得了JSONArray的对象之后,取其第一个元素即我们需要的一个student的变形,然后使用JSONObject轻松获得。
5.list和json字符串的互转
list--转json字符串
Student stu=new Student();
stu.setName("JSON");
stu.setAge("23");
stu.setAddress("北京市海淀区");
List<Student> lists=new ArrayList<Student>();
lists.add(stu);
//5.1、使用JSONObject
//JSONObject listObject=JSONObject.fromObject(lists);
//5.2、使用JSONArray
JSONArray listArray=JSONArray.fromObject(lists);
//System.out.println("listObject:"+listObject.toString());
System.out.println("listArray:"+listArray.toString());
我把使用JSONObject的方式给注掉了,我们先看注释之前的结果,
Exception in thread "main" net.sf.json.JSONException: 'object' is an array. Use JSONArray instead
告诉我说有一个异常,通过查看源码发现,在使用fromObject方法的时候会先进行参数类型的判断,这里就告诉我们,传入的参数是一个array类型,因为使用的ArrayList,再来看,注释之后的结果,
listArray:[{"address":"北京市海淀区","age":"23","name":"JSON"}]
json字符串--》》list
String arrayStr="[{\"name\":\"JSON\",\"age\":\"24\",\"address\":\"北京市西城区\"}]";
//转化为list
List<Student> list2=(List<Student>)JSONArray.toList(JSONArray.fromObject(arrayStr), Student.class);
for (Student stu : list2) {
System.out.println(stu);
}
//转化为数组
Student[] ss =(Student[])JSONArray.toArray(JSONArray.fromObject(arrayStr),Student.class);
for (Student student : ss) {
System.out.println(student);
}
结果:Student [name=JSON, age=24, address=北京市西城区]
Student [name=JSON, age=24, address=北京市西城区]
6.map和json字符串的互转
map--》》json字符串
Student stu=new Student();
stu.setName("JSON");
stu.setAge("23");
stu.setAddress("中国上海");
Map<String,Student> map=new HashMap<String,Student>();
map.put("first", stu);
//6.1、JSONObject
JSONObject mapObject=JSONObject.fromObject(map);
System.out.println("mapObject"+mapObject.toString());
//6.2、JSONArray
JSONArray mapArray=JSONArray.fromObject(map);
System.out.println("mapArray:"+mapArray.toString());
结果
mapObject{"first":{"address":"中国上海","age":"23","name":"JSON"}}
mapArray:[{"first":{"address":"中国上海","age":"23","name":"JSON"}}]
json字符串--》》map
String strObject="{\"first\":{\"address\":\"中国上海\",\"age\":\"23\",\"name\":\"JSON\"}}";
//JSONObject
JSONObject jsonObject=JSONObject.fromObject(strObject);
Map map=new HashMap();
map.put("first", Student.class);
//使用了toBean方法,需要三个参数
MyBean my=(MyBean)JSONObject.toBean(jsonObject, MyBean.class, map);
System.out.println(my.getFirst());
结果:
Student name=JSON, age=23, address=中国上海]
7.下面是MyBean的代码,
public class MyBean {
private Student first;
public Student getFirst() {
return first;
}
public void setFirst(Student first) {
this.first = first;
}
使用toBean()方法是传入了三个参数,第一个是JSONObject对象,第二个是MyBean.class,第三个是一个Map对象。通过MyBean可以知道此类中要有一个first的属性,且其类型为Student,要和map中的键和值类型对应,即,first对应键 first类型对应值的类型。
以上是小弟自己总结出来的有不足的地方欢迎吐槽!学如逆水行舟不进则退!!!与君共勉!
转载于:https://www.cnblogs.com/ysySelf/p/10208823.html
JSON数据格式转换(StringBuffer拼接json串)大全及用法相关推荐
- Python中json数据格式转换
json数据格式(良好的中转数据格式) JSON是一种轻量级的数据交互格式.可以按照JSON指定的格式去组织和封装数据 JSON本质上是一种带有特定格式的字符串 **JSON的主要功能:**json就 ...
- JSON数据格式的基本使用-JSON序列化
文章目录 1.JSON的由来 2.JSON基本语法 3. JSON序列化 4.Stringify方法的补充 4.1 replace参数 4.2 space参数 5.parse方法的补充 1.JSON的 ...
- python中字符串和json的转换,Python笔记——json和字符串之间的相互转换
json和字符串之间的转换,主要使用到json库中的json.loads()函数json.dumps()含函数. 所以我们首先要导入json库. import json 一.字符串转为json,使用 ...
- java数据文本格式转换_SpringMVC中Json数据格式转换
1 @RequestBody 作用: @RequestBody注解用于读取http请求的内容(字符串),通过springmvc提供的HttpMessageConverter接口将读到的内容转换为js ...
- mysql json php 直接使用_PHP面试题大全(值得收藏)
php中文网最新课程 每日17点准时技术干货分享 相关推荐:<2019年PHP面试题大汇总(收藏)> 一 .PHP基础部分 1.PHP语言的一大优势是跨平台,什么是跨平台? PHP的运行环 ...
- java 泛型集合 json_将泛型集合转换成分页json数据
[java]代码库package com.sunweb.util.jsonfactory; import java.util.List; import com.sunweb.util.jsonfact ...
- 后台怎么接收处理从url 客户端传来的json数据格式
最近做项目用到了 一个新的客户端传参的方式,主要采用的是客户端以json数据格式的方式想后台传递数据,所以,后台接收的参数也是json格式的,刚开始不知道怎么做, 到最后才找到了解决的办法就是利用go ...
- JSON数据格式超全总结
** JSON数据格式超全总结** 1.JSON数据格式概念 JSON数据现在是我们开发中用的最多的,百分之九十的数据都是通过JSON方式进行传输,那么JSON是什么呢? JSON其实是一种轻量级的数 ...
- 2020-08-22 SpringMVC中Json使用、后端返回给前端的JSON对象乱码问题、前台对Json数据格式的操作、Jackson以及FastJson使用
json的使用 我们广义上说的后端开发提供接口,其实指的是我们在Controller层定义的域名:端口号/请求名 前端获取这个请求,去赋给比如表单的action,获取相应的结果集并展示. json:轻 ...
最新文章
- android 常用 style,Android中 Styles和Themes
- java异常 字节码,Java字节码角度分析异常处理
- 【CodeForces - 599C 】Day at the Beach(思维)
- 上传SVN丢失.a文件的问题
- usb连接不上 艾德克斯电源_工程师,USB与SPI之间如何通信?什么芯片方案可以实现...
- stm32时钟树_STM32中的时钟
- 大型网站技术架构(五)网站高可用架构
- c#: using Microsoft.Office.Interop.Excel 异常
- 使用expect编写脚本
- 搜索文件夹中word文档中的关键字
- app小窗口悬浮工具_app小窗口悬浮工具_侧边栏 app小窗口悬浮工具
- 【保姆级教程】STK3332系列环境光传感器整理!STK333X
- CSDN富文本编辑器去除空行
- python对压缩包简单加密_简单文件压缩加密脚本 python
- 5000人小程序 服务器,微信公开课憋了哪些大招?放开5000好友限制,小程序超8000亿规模...
- EIDcenter 与金山毒霸设计软件视觉包装
- 将fluent的h5文件导入tecplot的方法
- 格兰杰检验的基本步骤_如何在STATA中做格兰杰因果关系检验
- Ural1136-Parliament
- UEBA技术在ADAudit Plus中的应用
热门文章
- 拉普拉斯算子_图机器学习图拉普拉斯算子的离散正则性,141页ppt,Discrete regularity graph Laplacians...
- exe软件打包工具哪个好_小视频制作软件哪个好?推荐五款超赞小视频制作工具...
- CSS基础-行高(height和line-height)【学习笔记】
- WebDriver API学习记录
- git21天打卡Day1-linux下安装git
- SVN学习2020.8.9
- 人生难免有失意,还是个小姑娘的她...成功的转行测试岗拿到18k offer
- 辞职腾讯去了小公司,从0到1搭建后端架构,工资就翻倍了
- 匹配左括号或者右括号js_九章算法 | 蚂蚁金服面试题:有效的括号字符串
- php 零宽断言,正则表达式之零宽断言