項目數據庫用戶答題卡設計以及json轉化

                    項目數據庫用戶答題卡設計以及json轉化

一、項目答題卡數據庫設計

1、介紹

在項目中需要存儲用戶答題記錄,若是單條數據記錄太浪費數據庫內存,同時也會造成大量數據冗餘,所以將用戶答題信息作爲一個json轉爲string存儲起來。通過Map<String,Object> sheet = new  HashMap<String,Object>();來進行答題卡信息存儲。

數據庫存儲答題卡格式如下:

2、json轉化

pom文件依賴(阿里fastjson)

<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>fastjson</artifactId>
	<version>1.2.30</version>
</dependency>

a、將map格式信息轉化爲json再轉化爲string保存到數據庫

// 將map轉成json格式 answerSheet是Map格式
JSONObject jsonObject = new JSONObject(answerSheet);
// 將json轉成String,方便存入數據庫
String answerSheetString = jsonObject.toJSONString();

b、將數據庫string轉爲json返回給前臺

// result爲string類型
JSONObject resultJson = JSONObject.parseObject(result);
String value = (Map<String,Object>)resultJson;

c、將b中Map<String,Object>json獲取right或error答對答錯數據信息,需要動態添加或修改答題狀態

String answerjson = JSON.toJSONString(answerCard, true);
			
List<Integer> rightList=  JSON.parseArray(JSON.parseObject(answerjson).getString(RIGHT), Integer.class);
			if(rightList != null){
				rightResultSet = new HashSet<Integer>(rightList);
			}
List<Integer> errorList=  JSON.parseArray(JSON.parseObject(answerjson).getString(ERROR), Integer.class);
			if(errorList != null){
				errorResultSet = new HashSet<Integer>(errorList);
			}

注意:雖然你保存是set,但是通過該種方式只能以list集合來獲取。

d、將數據庫中對象數組對象解析解析

數據類型:

解析:

userAnswerSheet1是通過myBatista查詢的數據庫字段
String answerjson1 = JSON.toJSONString(userAnswerSheet1, true);
JSONObject jsonObject = JSONObject.parseObject(answerjson1);
JSONArray rightArray = (JSONArray)jsonObject.get("right");
JSONArray errorArray = (JSONArray)jsonObject.get("error");

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章