获取到前端的json,对其进行分析

1、获取最外层前端json对应得JavaBean

(1)未分析格式的json串

首先我们获取到原始的json字符串

{
"type":"start",
"content":"所有人",
"properties":{
"title":"发起人124124",
"initiator":"ALL",
"nodeName":"发起人124124",
"withdrawSwitch":true,
"memberSet":[
{
"deptId":38165,
"nickName":"白波",
"userId":417586,
"userName":"baiboit"
}
],
"formOperates":[
{
"name":"单行输入框",
"key":"1598583241000_12287",
"type":"input",
"checkedList":[
"visibility"
]
},
{
"name":"单选框",
"key":"1598583242000_8033",
"type":"radio",
"checkedList":[
"visibility"
]
},
{
"name":"日期",
"key":"1598583244000_29500",
"type":"date",
"checkedList":[
"visibility"
]
}
]
},
"nodeId":"SID-55cf0a21-2ebc-febe-dc71-f5a629374be6",
"childNode":{
"type":"fill",
"content":"发起人自选",
"properties":{
"title":"填报人",
"menbers":{
"dep":[
{
"nodeId":4,
"deptId":4,
"deptName":"xxx研发部",
"parentDeptId":1
}
]
},
"userOptional":true,
"nodeName":"填报人",
"fillSetSwitch":false,
"memberSet":[
{
"deptId":38165,
"nickName":"吴妮婷",
"userId":417571,
"userName":"wuniting"
}
],
"memberSetOptional":[
{
"deptId":null,
"nickName":"",
"userId":null,
"userName":null
}
],
"circulationRules":"",
"processNodeTipForm":{
"arriveReminders":[ ],
"UntreatedNum":"",
"UntreatedTime":"",
"AutoAlert":[ ]
},
"formOperates":[
{
"name":"",
"type":"",
"key":"",
"checkedList":[
"visibility",
"write"
]
}
]
},
"nodeId":"SID-6745bda6-55fd-9029-ac2e-b6bf38e756db",
"prevId":"SID-55cf0a21-2ebc-febe-dc71-f5a629374be6",
"childNode":{
"type":"fill",
"content":"发起人自选",
"properties":{
"title":"填报人12323455",
"menbers":{
"dep":[
{
"nodeId":4,
"deptId":4,
"deptName":"xxx研发部",
"parentDeptId":1
}
]
},
"userOptional":true,
"nodeName":"填报人",
"fillSetSwitch":false,
"memberSet":[
{
"deptId":38165,
"nickName":"张淼",
"userId":417557,
"userName":"zhangmiao"
}
],
"memberSetOptional":[
{
"deptId":null,
"nickName":"",
"userId":null,
"userName":null
}
],
"circulationRules":"renyi",
"processNodeTipForm":{
"arriveReminders":[
"shortMessage",
"mail"
],
"UntreatedNum":"30",
"UntreatedTime":"minutes",
"AutoAlert":[
"shortMessage"
]
},
"formOperates":[
{
"name":"单行输入框",
"key":"1598583241000_12287",
"type":"input",
"checkedList":[
"visibility"
]
},
{
"name":"单选框",
"key":"1598583242000_8033",
"type":"radio",
"checkedList":[
"visibility"
]
},
{
"name":"日期",
"key":"1598583244000_29500",
"type":"date",
"checkedList":[
"visibility"
]
}
]
},
"nodeId":"SID-2bbfe3a8-4c3b-a143-e644-6193fe141426",
"prevId":"SID-6745bda6-55fd-9029-ac2e-b6bf38e756db",
"childNode":{
"nodeId":"SID-990e8b6a-68d1-dcf9-9ad1-00f8d2ccdc6a",
"type":"approver",
"content":"发起人自选",
"properties":{
"title":"审批人123124",
"nodeName":"审批人",
"assigneeType":"optional",
"approverSetSwitch":false,
"memberSet":[
{
"deptId":38165,
"nickName":"袁嵩",
"userId":417555,
"userName":"yuansong"
}
],
"memberSetOptional":[
{
"deptId":null,
"nickName":"",
"userId":null,
"userName":null
}
],
"fillSwitch":false,
"ccSetSwitch":false,
"approvalOpinions":"disable",
"backOff":{
"Switch":true,
"backOffState":false,
"backOffNode":"faqiren",
"btnName":"1213",
"surebackOffNode":"zhiding"
},
"transfer":{
"Switch":false,
"transferState":false,
"btnName":"",
"memberSet":[
{
"deptId":38165,
"nickName":"袁嵩",
"userId":417555,
"userName":"yuansong"
}
]
},
"addApproverPerson":{
"Switch":false,
"addApproverState":false,
"btnName":"",
"memberSet":[
{
"deptId":38165,
"nickName":"袁嵩",
"userId":417555,
"userName":"yuansong"
}
]
},
"addCcPerson":{
"Switch":false,
"addCcState":false,
"btnName":"",
"memberSet":[
{
"deptId":38165,
"nickName":"袁嵩",
"userId":417555,
"userName":"yuansong"
}
]
},
"addEnclosurePerson":{
"Switch":false,
"addEncloureState":false,
"btnName":"",
"findEnclosurePower":[ ]
},
"circulationRules":"renyi",
"processNodeTipForm":{
"arriveReminders":[
"shortMessage",
"mail"
],
"UntreatedNum":"40",
"UntreatedTime":"minutes",
"AutoAlert":[
"shortMessage"
]
},
"formOperates":[
{
"name":"单行输入框",
"key":"1598583241000_12287",
"type":"input",
"checkedList":[
"visibility"
]
},
{
"name":"单选框",
"key":"1598583242000_8033",
"type":"radio",
"checkedList":[
"visibility"
]
},
{
"name":"日期",
"key":"1598583244000_29500",
"type":"date",
"checkedList":[
"visibility"
]
}
]
},
"prevId":"SID-2bbfe3a8-4c3b-a143-e644-6193fe141426",
"childNode":{
"nodeId":"SID-8c2cef4a-450c-a248-8328-bfaae369232a",
"type":"approver",
"content":"发起人自选",
"properties":{
"title":"审批人212",
"nodeName":"审批人",
"assigneeType":"optional",
"approverSetSwitch":false,
"memberSet":[
{
"deptId":38165,
"nickName":"莫菲",
"userId":440815,
"userName":"mofei"
}
],
"memberSetOptional":[
{
"deptId":null,
"nickName":"",
"userId":null,
"userName":null
}
],
"fillSwitch":false,
"ccSetSwitch":false,
"approvalOpinions":"required",
"backOff":{
"Switch":false,
"backOffState":false,
"backOffNode":"",
"btnName":"",
"surebackOffNode":""
},
"transfer":{
"Switch":false,
"transferState":false,
"btnName":"",
"memberSet":[
{
"deptId":38165,
"nickName":"莫菲",
"userId":440815,
"userName":"mofei"
}
]
},
"addApproverPerson":{
"Switch":false,
"addApproverState":false,
"btnName":"",
"memberSet":[
{
"deptId":38165,
"nickName":"莫菲",
"userId":440815,
"userName":"mofei"
}
]
},
"addCcPerson":{
"Switch":false,
"addCcState":false,
"btnName":"",
"memberSet":[
{
"deptId":38165,
"nickName":"莫菲",
"userId":440815,
"userName":"mofei"
}
]
},
"addEnclosurePerson":{
"Switch":false,
"addEncloureState":false,
"btnName":"",
"findEnclosurePower":[ ]
},
"circulationRules":"",
"processNodeTipForm":{
"arriveReminders":[ ],
"UntreatedNum":"",
"UntreatedTime":"",
"AutoAlert":[ ]
},
"formOperates":[
{
"name":"",
"type":"",
"key":"",
"checkedList":[
"visibility",
"write"
]
}
]
},
"prevId":"SID-990e8b6a-68d1-dcf9-9ad1-00f8d2ccdc6a"
}
}
}
}
}

(2)初步格式化json,获取到最外层的JavaBean与其对应的字段名

紧接着,我们需要对json传中一些共性的东西进行分析,这里可以很容易看出,在后台进行解析这条json串时我们需要使用递归的思想对这一条json串进行解析,这里我推荐一个json自动格式化网站
json格式化

{
"type":"start",
"content":"所有人",
"properties":Object{...},
"nodeId":"SID-55cf0a21-2ebc-febe-dc71-f5a629374be6",
"childNode":{
"type":"fill",
"content":"发起人自选",
"properties":Object{...},
"nodeId":"SID-6745bda6-55fd-9029-ac2e-b6bf38e756db",
"prevId":"SID-55cf0a21-2ebc-febe-dc71-f5a629374be6",
"childNode":{
"type":"fill",
"content":"发起人自选",
"properties":Object{...},
"nodeId":"SID-2bbfe3a8-4c3b-a143-e644-6193fe141426",
"prevId":"SID-6745bda6-55fd-9029-ac2e-b6bf38e756db",
"childNode":{
"nodeId":"SID-990e8b6a-68d1-dcf9-9ad1-00f8d2ccdc6a",
"type":"approver",
"content":"发起人自选",
"properties":Object{...},
"prevId":"SID-2bbfe3a8-4c3b-a143-e644-6193fe141426",
"childNode":{
"nodeId":"SID-8c2cef4a-450c-a248-8328-bfaae369232a",
"type":"approver",
"content":"发起人自选",
"properties":Object{...},
"prevId":"SID-990e8b6a-68d1-dcf9-9ad1-00f8d2ccdc6a"
}
}
}
}
}

这里我们可以看到,这一条Json串中有一些共性的东西,这些便是最外层JavaBean对象中对用的字段

(3)最外层Json串对应得JavaBean实体类

/**
* Copyright 2020 bejson.com
*/
package com.activiti.domain; /**
* Auto-generated: 2020-08-28 16:44:47
*
* @author bejson.com (i@bejson.com)
* @website http://www.bejson.com/java2pojo/
*
* 解析流程Json获取相关的信息
*/
public class JsonProcessRootBean { /**
* 节点类型start
*/
private String type;
/**
* 节点对应的内容
*/
private String content;
/**
* 节点属性
*/
private Properties properties;
/**
* 节点id
*/
private String nodeId; /**
* 上一任务节点的id
*/
private String prevId;
public void setType(String type) {
this.type = type;
}
public String getType() {
return type;
} public void setContent(String content) {
this.content = content;
}
public String getContent() {
return content;
} public void setProperties(Properties properties) {
this.properties = properties;
}
public Properties getProperties() {
return properties;
} public void setNodeId(String nodeId) {
this.nodeId = nodeId;
}
public String getNodeId() {
return nodeId;
} public String getPrevId() {
return prevId;
} public void setPrevId(String prevId) {
this.prevId = prevId;
} @Override
public String toString() {
return "JsonProcessRootBean{" +
"type='" + type + '\'' +
", content='" + content + '\'' +
", properties=" + properties +
", nodeId='" + nodeId + '\'' +
", prevId='" + prevId + '\'' +
'}';
}
}

2、仔细刨析每一层中共性的细节,发现properties这个字段也能够封装成一个实体类

(1)properties字段对应的json

{
"type":"start",
"content":"所有人",
"properties":Object{...},
"nodeId":"SID-55cf0a21-2ebc-febe-dc71-f5a629374be6",
"childNode":{
"type":"fill",
"content":"发起人自选",
"properties":{
"title":"填报人",
"menbers":Object{...},
"userOptional":true,
"nodeName":"填报人",
"fillSetSwitch":false,
"memberSet":Array[1],
"memberSetOptional":Array[1],
"circulationRules":"",
"processNodeTipForm":Object{...},
"formOperates":Array[1]
},
"nodeId":"SID-6745bda6-55fd-9029-ac2e-b6bf38e756db",
"prevId":"SID-55cf0a21-2ebc-febe-dc71-f5a629374be6",
"childNode":{
"type":"fill",
"content":"发起人自选",
"properties":Object{...},
"nodeId":"SID-2bbfe3a8-4c3b-a143-e644-6193fe141426",
"prevId":"SID-6745bda6-55fd-9029-ac2e-b6bf38e756db",
"childNode":{
"nodeId":"SID-990e8b6a-68d1-dcf9-9ad1-00f8d2ccdc6a",
"type":"approver",
"content":"发起人自选",
"properties":Object{...},
"prevId":"SID-2bbfe3a8-4c3b-a143-e644-6193fe141426",
"childNode":{
"nodeId":"SID-8c2cef4a-450c-a248-8328-bfaae369232a",
"type":"approver",
"content":"发起人自选",
"properties":Object{...},
"prevId":"SID-990e8b6a-68d1-dcf9-9ad1-00f8d2ccdc6a"
}
}
}
}
}

通过json串我们可以看出,Properties这个JavaBean对象包括Menber、ProcessNodeTipForm的JavaBean对象,包含List<MemberSet>、List<MemberSetOptional>、List<FormOperates>这里只做流程相关的操作,表单Form的砍掉三个集合

(2)Properties对应的JavaBean对象

/**
* Copyright 2020 bejson.com
*/
package com.activiti.domain;
import java.util.List;
import java.util.Set; /**
* Auto-generated: 2020-08-28 16:44:47
*
* @author bejson.com (i@bejson.com)
* @website http://www.bejson.com/java2pojo/
*/
public class Properties { /**
* 当前属性的title
*/
private String title;
/**
* 审批人部门,有时只传部门信息,只传部门信息,没有用户信息,整个
*/
private Menbers menbers;
/**
* 用户的操作选择
*/
private boolean userOptional;
/**
* 节点名
*/
private String nodeName;
/**
* 是否填充
*/
private boolean fillSetSwitch;
/**
* 流程自己设置的负责人
*/
private Set<MemberSet> memberSet;
/**
* 发起人自选
*/
private Set<MemberSetOptional> memberSetOptional;
/**
*
*/
private String circulationRules;
private ProcessNodeTipForm processNodeTipForm;
public void setTitle(String title) {
this.title = title;
}
public String getTitle() {
return title;
} public void setMenbers(Menbers menbers) {
this.menbers = menbers;
}
public Menbers getMenbers() {
return menbers;
} public void setUserOptional(boolean userOptional) {
this.userOptional = userOptional;
}
public boolean getUserOptional() {
return userOptional;
} public void setNodeName(String nodeName) {
this.nodeName = nodeName;
}
public String getNodeName() {
return nodeName;
} public void setFillSetSwitch(boolean fillSetSwitch) {
this.fillSetSwitch = fillSetSwitch;
}
public boolean getFillSetSwitch() {
return fillSetSwitch;
} public Set<MemberSet> getMemberSet() {
return memberSet;
} public void setMemberSet(Set<MemberSet> memberSet) {
this.memberSet = memberSet;
} public Set<MemberSetOptional> getMemberSetOptional() {
return memberSetOptional;
} public void setMemberSetOptional(Set<MemberSetOptional> memberSetOptional) {
this.memberSetOptional = memberSetOptional;
} public void setCirculationRules(String circulationRules) {
this.circulationRules = circulationRules;
}
public String getCirculationRules() {
return circulationRules;
} public void setProcessNodeTipForm(ProcessNodeTipForm processNodeTipForm) {
this.processNodeTipForm = processNodeTipForm;
}
public ProcessNodeTipForm getProcessNodeTipForm() {
return processNodeTipForm;
} @Override
public String toString() {
return "Properties{" +
"title='" + title + '\'' +
", menbers=" + menbers +
", userOptional=" + userOptional +
", nodeName='" + nodeName + '\'' +
", fillSetSwitch=" + fillSetSwitch +
", memberSet=" + memberSet +
", memberSetOptional=" + memberSetOptional +
", circulationRules='" + circulationRules + '\'' +
", processNodeTipForm=" + processNodeTipForm +
'}';
}
}

(3)MemberSet、FormOperates的Java实体类对应为

MemberSet

/**
* Copyright 2020 bejson.com
*/
package cmcc.it.project.light.manage.domain.processjson; /**
* Auto-generated: 2020-08-28 16:44:47
* 根据前端传入的json封装的JavaBean实体对象,审批人信息
* @author bejson.com (i@bejson.com)
* @website http://www.bejson.com/java2pojo/
*/
public class MemberSet { /**
* 流程设置审批人的部门id
*/
private String deptId;
/**
* 用户的别名
*/
private String nickName;
/**
* 用户的用户id
*/
private String userId;
/**
* 用户名
*/
private String userName; public String getDeptId() {
return deptId;
} public void setDeptId(String deptId) {
this.deptId = deptId;
} public String getNickName() {
return nickName;
} public void setNickName(String nickName) {
this.nickName = nickName;
} public String getUserId() {
return userId;
} public void setUserId(String userId) {
this.userId = userId;
} public String getUserName() {
return userName;
} public void setUserName(String userName) {
this.userName = userName;
} @Override
public String toString() {
return "MemberSet{" +
"deptId='" + deptId + '\'' +
", nickName='" + nickName + '\'' +
", userId='" + userId + '\'' +
", userName='" + userName + '\'' +
'}';
}
}

FormOperates

package cmcc.it.project.light.manage.domain.processjson;

import java.util.List;

/**
* @author zhudunfeng
* @date 2020/9/4 9:45
* 解析json
*/
public class FormOperates {
private String name;
private String key;
private String type;
private List<String> checkedList; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getKey() {
return key;
} public void setKey(String key) {
this.key = key;
} public String getType() {
return type;
} public void setType(String type) {
this.type = type;
} public List<String> getCheckedList() {
return checkedList;
} public void setCheckedList(List<String> checkedList) {
this.checkedList = checkedList;
} @Override
public String toString() {
return "FormOperates{" +
"name='" + name + '\'' +
", key='" + key + '\'' +
", type='" + type + '\'' +
", checkedList=" + checkedList +
'}';
}
}

、、、这样对接送不断进行分析与封装

3、使用fastJson解析json对JavaBean对象进行赋值

 /**
* 解析前端的自定义流程Json信息
* @param modelId
* @return Json对应的实体类对象信息
* @author zhudunfeng
*/
@Override
public List<JsonProcessRootBean> parsejsonProcessRootBean(String modelId) {
//获取流程模板数据
ActDeModel actDeModel = actDeModelMapper.selectActDeModelById(modelId);
String modelEditorJson =actDeModel.getModelEditorJson();
List<JsonProcessRootBean> jsonProcessRootBeanList = new ArrayList<>();
String childNode = modelEditorJson;
while (null != childNode && !"".equals(childNode)) {
try {
JsonProcessRootBean jsonProcessRootBean = new JsonProcessRootBean();
//流程json
JSONObject jsonObject = JSONObject.parseObject(childNode);
//开始装配流程节点数据
jsonProcessRootBean.setNodeId(jsonObject.get("nodeId").toString());
jsonProcessRootBean.setType(jsonObject.get("type").toString());
jsonProcessRootBean.setContent(jsonObject.get("content").toString());
//节点的变量名
jsonProcessRootBean.setAssignee(jsonObject.get("assignee").toString());
//会签节点的变量名
if (jsonObject.get("assigneeList") != null) {
jsonProcessRootBean.setAssigneeList(jsonObject.get("assigneeList").toString());
} //发起节点没有prevId属性,其他节点都有prevId属性
if (jsonObject.get("prevId") != null) {
jsonProcessRootBean.setPrevId(jsonObject.get("prevId").toString());
}
//开始解析当前节点的人员数据
//1、获取properties属性值
JSONObject propertiesObj = JSONObject.parseObject(jsonObject.get("properties").toString());
Properties properties = new Properties();
if (null != propertiesObj && !"".equals(propertiesObj)) {
properties.setTitle(propertiesObj.get("title").toString());
Object userOptional = propertiesObj.get("userOptional");
if (userOptional != null) {
properties.setUserOptional((Boolean)userOptional);
}
Object fillSetSwitch = propertiesObj.get("fillSetSwitch");
if (fillSetSwitch != null) {
properties.setFillSetSwitch((Boolean)fillSetSwitch);
}
properties.setNodeName(propertiesObj.get("nodeName").toString());
//当前任务节点是否为会签节点
properties.setCountersign(propertiesObj.get("countersign").toString()); List<MemberSet> processNodeMemberSet = new ArrayList<>();
List<MemberSetOptional> processNodeMemberSetOptional=new ArrayList<>();
List<DeptSet> processNodeDeptSet=new ArrayList<>();
List<FormOperates> processNodeFormOperatesSet=new ArrayList<>(); //获取memberSet属性值,转换为JSONArray数组类型
JSONArray memberSetArray = JSONArray.parseArray(propertiesObj.get("memberSet").toString());
Object memberSetOptional = propertiesObj.get("memberSetOptional");
JSONArray memberSetOptionalArray=null;
if (memberSetOptional != null&&!"".equals(memberSetOptional)) {
memberSetOptionalArray = JSONArray.parseArray(memberSetOptional.toString());
}
Object deptSet = propertiesObj.get("deptSet");
JSONArray deptSetArray=null;
if (deptSet != null&&!"".equals(deptSet)) {
deptSetArray= JSONArray.parseArray(deptSet.toString());
} Object formOperatesList = propertiesObj.get("formOperates");
JSONArray formOperatesArray=null;
if (formOperatesList != null) {
formOperatesArray= JSONArray.parseArray(formOperatesList.toString());
} //如果当前节点有选择的人员数据
if(memberSetArray != null && memberSetArray.size() >= 0){
//遍历memberSet数组
for (Object obj : memberSetArray) {
JSON memberSetJson = (JSON) obj;
//转换为实体类对象
MemberSet processNodeMember = JSON.parseObject(memberSetJson.toJSONString(),
new TypeReference<MemberSet>() {
});
processNodeMemberSet.add(processNodeMember);
}
}
//如果是发起人自选
if(memberSetOptionalArray != null && memberSetOptionalArray.size() >= 0){
//遍历memberSetOptional数组
for (Object obj : memberSetOptionalArray) {
JSON memberSetOptionalJson = (JSON) obj;
//转换为实体类对象
MemberSetOptional processNodeMemberOptional = JSON.parseObject(memberSetOptionalJson.toJSONString(),
new TypeReference<MemberSetOptional>() {
});
processNodeMemberSetOptional.add(processNodeMemberOptional);
}
} //部门信息
if(deptSetArray!=null&&deptSetArray.size()>0){
//遍历deptSetArray数组
for (Object obj : deptSetArray) {
JSON deptSetJson = (JSON) obj;
//转换为实体类对象
DeptSet deptSet1 = JSON.parseObject(deptSetJson.toJSONString(),
new TypeReference<DeptSet>() {
});
processNodeDeptSet.add(deptSet1);
}
} //formOperates
if(formOperatesArray!=null&&formOperatesArray.size()>0){
//遍历formOperatesArray数组
for (Object obj : formOperatesArray) {
JSON formOperatesJson= (JSON) obj;
//转换为实体类
FormOperates formOperates = JSON.parseObject(formOperatesJson.toJSONString(),
new TypeReference<FormOperates>() {
});
processNodeFormOperatesSet.add(formOperates);
}
} properties.setMemberSet(processNodeMemberSet);
properties.setMemberSetOptional(processNodeMemberSetOptional);
properties.setDeptSet(processNodeDeptSet);
properties.setFormOperates(processNodeFormOperatesSet);
}
jsonProcessRootBean.setProperties(properties);
jsonProcessRootBeanList.add(jsonProcessRootBean);
//更新childNode
childNode = "";
Object childNodeObj = jsonObject.get("childNode");
//有下一节点
if (childNodeObj != null) {
childNode = JSON.toJSONString(jsonObject.get("childNode"));
}
} catch (Exception e) {
e.printStackTrace();
return null;
}
} return jsonProcessRootBeanList;
}

请大家提出意见,进行优化

FastJson解析Json,封装JavaBean对象的更多相关文章

  1. JavaWeb_(Jar)使用fastjson解析json和序列化对象

    菜鸟教程 传送门 JSON官网 传送门 fastjson插件下载 传送门 序列化[百度百科]:序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程.在序列化期间,对 ...

  2. Spring Boot返回json数据及完美使用FastJson解析Json数据

     Spring Boot返回json数据 视频地址:http://www.iqiyi.com/w_19rubxzsr5.html 博文参考:https://blog.csdn.net/linxingl ...

  3. fastjson解析json数组

    1.fastjson解析json数组(直接上代码) import java.util.ArrayList; import java.util.List; import com.alibaba.fast ...

  4. Scala中使用fastJson 解析json字符串

    Scala中使用fastJson 解析json字符串 添加依赖 2.解析json字符 2.1可以通过JSON中的parseObject方法,把json字符转转换为一个JSONObject对象 2.2然 ...

  5. FastJSON解析Json字符串(反序列化为List、Map)

    在日常开发与数据库打交道的时候,常有以Json格式的字符串存储到数据库的情况,当在Java程序中获取到对应的Json格式的String字符串后,如何才能转换为我们想要的数据格式(比如转换成Java中的 ...

  6. 利用fastjson解析json并通过js&ajax实现页面的无跳转刷新

    1.json是一种优秀的数据格式,在移动开发和web开发中经常用到,本例中通过一个小案例讲解如何通过alibaba的开源框架fastjson来解析jason数据格式并通过js实现无跳转刷新 2,新建一 ...

  7. 78. Spring Boot完美使用FastJson解析JSON数据【从零开始学Spring Boot】

    [原创文章,转载请注明出处] 个人使用比较习惯的json框架是fastjson,所以spring boot默认的json使用起来就很陌生了,所以很自然我就想我能不能使用fastjson进行json解析 ...

  8. 如何快速通过json构建javabean对象(Intellij IDEA-->GsonFormat使用教程)

    和第三方对接的时候,返回给我们的json时参数字段多是很常见的现象,所以我们手动去创建javabean肯定是要花费不少时间,博主在网上找到了很多种,可用通过json自动生成javabean的工具,这里 ...

  9. spring boot (二):使用fastJson解析json数据

    如果我们想在spring boot中使用第三方的json解析框架: 1)我们需要在pom.xml文件中引入第三方包的依赖; 2)实现方法: 方法1 需要在启动类中继承WebMvcConfigurerA ...

随机推荐

  1. 1.异常页面: /File/ApplyFileForm.aspx 2.异常信息: 基类包括字段“PageOfficeCtrl1”,但其类型(PageOffice.PageOfficeCtrl)与控件(PageOffice.PageOfficeCtrl)的类型不兼容。

    出现页面报错的解决如下: 1.  在  .aspx  页面报错的字段  ID 名称更改: 2.  在没有重复 ID控件,先实行步骤1, 生成项目是ok的,然后,还原,原来的ID名称,再去浏览页面运行, ...

  2. JS中有趣的内置对象-JSON

    前言 在以前的web开发中,我们多数选择纯文本或XML作为我们的提交的数据格式,大多数是XML,少数纯文本.其实从AJAX(Asynchronous JavaScript and XML)的命名我们也 ...

  3. 剑指offer 07 & LeetCode 105 重建二叉树

    题目 题目链接:https://leetcode-cn.com/problems/zhong-jian-er-cha-shu-lcof/ 初步题解 先放代码: /** * Definition for ...

  4. 关于Vue的那些事儿

    Vue 渐进式框架 众前端周知,Vue是一套用于构建用户界面的渐进式框架,自底向上逐层应用,关注视图层.那我们就来说道说道: 渐进式:声明式渲染->组件系统->客户端路由(router)- ...

  5. 发送post请求

    题目: http://123.206.87.240:8002/post/ Brup抓包 1.修改Get 为 POST 2.添加 Content-Type: application/x-www-form ...

  6. 《Java从入门到失业》第四章:类和对象(4.1):初识类和对象

    4类和对象 在第一章曾经简单介绍过,在面向对象的世界里,一切事物皆对象,当解决一个问题的时候,我们先会考虑这个问题会涉及到哪些事物,然后把事物抽象成类,当时还画了一张图如下: 从本章开始,我们一点一点 ...

  7. [剑指Offer]17-打印从1到最大的n位数(递归)

    题目 如题,输入n,则从1打印至99. 题解 考虑到n比较大会有大数问题,所以使用字符数组存储数. 由题可用递归求n位全排列,即为所得. 具体地,用临时字符数组用来存答案,每次递归填好一位,都填好后输 ...

  8. 对JavaScript的复习(一)

    *javascript基础复习 1.function对象 创建 var 方法名=Function(形式参数列表){ 方法体 } 调用 方法名(实际参数列表) 2.Array对象 创建 * var ar ...

  9. 分布式系统监视zabbix讲解九之使用snmp监控windows

    zabbix监控windows演示 第一步:开启服务. 控制面板>程序>程序和功能>打开或关闭windows功能,勾选上简单网络管理协议(SNMP),以及下面的子程序.点击确定 第二 ...

  10. k8s运行容器之Job(四)

    Job 容器按照持续运行的时间可分为两类:服务类容器和工作类容器. 服务类容器通常持续提供服务,需要一直运行,比如 http server,daemon 等.工作类容器则是一次性任务,比如批处理程序, ...