String转成JSON
这个依赖很重要,我们将围绕fastjson中的JSONObject这个类来谈转换属国
groupIdcom.alibaba/groupId
artifactIdfastjson/artifactId
版本1 .2 .15/版本
/依赖性
线转成JSONString JSON=' { ' ABC ' : ' 1 ', '哈哈哈' : ' 2 ' }
JSON对象JSON对象=JSON对象。parseobject(内容);
一句话就能解决,非常便捷。
想要取出值,可以对` jsonObject '进行操作:
jsonobject。GetString(' ABC ');
结果为:`1`
将线转为目录后转为JSONListString list=new ArrayListString();
名单。添加('用户名');
名单。添加('年龄');
名单。添加(' sex ');
JSONArray数组=new JSONArray();
数组。添加(列表);
将线转为地图后转为JSONMapString,String map=new HashMapString,String();
map.put('abc ',' ABC ');
map.put('def ',' EFG ');
JSONArray数组_ test=new JSONArray();
数组测试。添加(地图);
JSON对象JSON对象=JSON对象。来自对象(映射);
特别注意:从JSONObject中取值,碰到了数字为键的时候,如
{
userAnswer': {
'28568': {
'28552': {
qId': '28552 ',
订单' : '1 ',
userScore': {
得分' : 100
},
回答' : {
'28554': '28554'
},
qScore': '100.0 ',
qtype': '单一选择,
sId': '28568 '
}
}
},
paperType': '1 ',
纸质' : '28567 ',
instanceId': 30823,
剩余时间' : -1,
examOid ' : ' 28570 '
}
获取"用户回答"的价值,再转成JSON,可仿照如下形式:
JSON对象userJson=JSON对象。parseobject(JSON对象。getstring('用户答案');
但是想获取密钥' 28568 '就没这么容易了。直接像上述的写法,会报错。
我们浏览fastjson中的源码,总结下,应该如下写:
JSON对象问题=(JSON对象)JSON对象。parseobject(节。getstring(' 28568 '),对象。类);
整体代码:
大刀代码很容易,就不贴出来了。
包裹。com。夏梅奈尔。训练。生意。服务;
进口。com。阿里巴巴。法斯森。JSON对象;
进口。com。夏梅奈尔。训练。生意。刀。以利亚宁道。elearningexaminstancedao
进口。com。夏梅奈尔。训练。生意。刀。道大师。elearningchoice erecordao
进口。com。夏梅奈尔。训练。生意。模特。laschoice记录;
进口。com。夏梅奈尔。训练。生意。模特。实体。电子学习。虔诚;
导入组织。弹簧框架。豆子。工厂。注释。自动连线;
导入组织。弹簧框架。日程安排。注释。预定;
import org.springframework。刻板印象。服务;
导入Java。数学。BigDecimal
导入Java。SQL。Blob
导入Java。SQL。SqLexception
导入Java。文字。SimpleDateformat
导入Java。乌提尔。*;
@服务
公共类ChoiceRecordService {
//查询数据大刀
@自动连线
私人电子邮件选择电子邮件;
//转储数据大刀
@自动连线
私有电子邮件检查安装道;
私人选择记录服务(){ 0
}
私有静态类单线记录位置{
私有静态最终laschoice记录选择记录=新laschoice记录();
}
公共静态laschoicerecord GetMapInstance(){ 0
返回单线协调。选择记录;
}
私有静态simpledate格式simpledate格式=新的simpledate格式(' yyyy-MM-DD ');
/**
* 定时任务,每天定时将E学网考试数据分析并转储
*
* @param : instanceIdList
* @返回:无效
* @作者: 28370高挑的高跟鞋
* @日期: 2018/11/20
**/
@Scheduled(cron='00 00 01 * *?')
公共void分析选择记录(){ 0
//获取前一天的时间
日期日期=新日期();
日历日历=日历。getinstance();
calendar.setTime(日期);
calendar.add(日历. DATE,-1);
日期=日历。gettime();
字符串日期字符串=简单日期格式。格式(日期);
ListBigDecimal instance id list=elearningexaminstanceao。findninstanceidbyfinishtime(日期字符串);
if(0!=实例id列表。size()){ 0
LasChoiceRecord LasChoiceRecord=getMapInstance();
instanceIdList.stream().forEach(实例id-{ 0
blob answerBlob=elearningexaminstanceao。查找用户答案(实例id);
long userId=elearningexaminstanceao。查找userId(实例id);
字符串内容=null
尝试{
内容=新字符串(answerblob。getbytes((long)1,(int)answerblob。length()));
} catch(SqLexception e){ 0
e。print stack trace();
系统。出去。println(' sqlexception : ' e);
}
JSON对象JSON对象=JSON对象。parseobject(内容);
//针对本部分的'公共'属性直接设置
laschoiceerecord。setuserid(userId);
laschoiceerecord。setpaper类型(jsonobject。getstring('纸张类型');
laschoiceerecord。set aper id(JSON object。get string(' paper oid ');
laschoiceerecord。SetCheckInstanceid(JSonobject。GetString(' instance id ');
laschoiceerecord。setremainingtime(jsonobject。getstring(' remainingTime ');
laschoiceerecord。setexamid(JSonobject。GetString(' ExAmoID ');
//针对部分中的题目进行细化循环拆分
JSON对象userJson=JSON对象。parseobject(JSON对象。getstring('用户答案');
set section set=userjson。KeySet();
IteratorString setIt=节集。迭代器();
分析电源(激光选择记录、用户界面、设置);
});
}
}
私有void analyze答案(LasChoiceRecord LasChoiceRecord,JSONObject userJson,IteratorString setIt){ 0
while(SetIt。HasNeXt()){ 0
//对每个问题进行再次拆分出题目
JSONObject节=(JSON对象)JSON对象。parseobject(userjson。getstring(setit。next())、object。类);
设置问题集=部分。KeySet();
IteratorString queIt=question set。迭代器();
while(queit。HasNeXt()){ 0
JSON对象问题=(JSON对象)JSON对象。parseobject(节。getstring(queit。next())、object。类);
字符串用户答案=问题。GetString(')答案');
字符串UserScore=问题。GetString(' UserScore ');
laschoice电子记录。setquestionid(问题。getstring(' qId ');
激光选择记录。setrecordid(uuid。randomuuid().toString());
电子邮件选择记录保存;
}
}
}
}