資料庫只是用來存儲數據的,為什麼不把處理數據的部分放在後台?
在這里你需要了解以下幾個知識點。
在sqlserver 中存儲json ,需要用字元串類型進行存儲,一般用nvarchar()或 varchar()進行存儲。
openJson:打開Json字元串
IsJson:判斷一個字元串是不是合法的Json格式。是返回1,否返回0,null返回null。
Json_Value:從Json字元串中提取值。
Json_Query:Json字元串中提取對象或數組。
Json_Modify:更新Json字元串中的屬性值,並返回更新的Json字元串
然後參考圖片的需求,獲取輸入key值中的value欄位可以得到如下sql語句。
從JSON中獲取輸入B的JSON對象
SELECT JSON_QUERY(json, CONCAT('$.',key)) INTO K_VAL;
從B的JSON對象中,獲取value欄位的值
SELECT JSON_VALUE(K_VAL, '$.value') INTO JSONVALUE;
最終我們的聲明的函數大概是:
CREATE FUNCTION PARSEJSON(json VARCHAR(2000), key VARCHAR(200))
RETURNS VARCHAR
BEGIN
declare JSONVALUE VARCHAR;
declare K_VAL VARCHAR;
SELECT JSON_QUERY(json, CONCAT('$.',key)) INTO K_VAL;
SELECT JSON_VALUE(K_VAL, '$.value') INTO JSONVALUE;
return JSONVALUE;
B. 楂樻柉鏁版嵁搴撳備綍瑙f瀽json
楂樻柉鏁版嵁搴撹В鏋恓son濡備笅錛
鍏堝皢json杞鎴恠truct銆傜劧鍚巎son.Unmarshal鍗沖彲銆俲son杞瑂truct錛屽彲浠ョ洿鎺ョ敤鍦ㄧ嚎鐨勫伐鍏鳳細https錛//mholt.github.io/json-to-go/鍦ㄥ乏杈硅創涓妀son鍚庨潰灝辯敓鎴恠truct浜嗐
楂樻柉鏁版嵁搴撴槸鐢卞崕涓轟簬2019騫5鏈15鏃ュ湪鍖椾含鍙戝竷鐨勪竴嬈句漢宸ユ櫤鑳藉師鐢熸暟鎹搴撱傝ユ暟鎹搴撴敮鎸佹湰鍦伴儴緗層佺佹湁浜戙佸叕鏈変簯絳夊氱嶅満鏅銆
C. 鏄撹璦濡備綍澶勭悊jquery getJson 鍚屽煙鎻愪氦鐨勯檺鍒
鎮ㄥソ,寰堥珮鍏翠負鎮ㄨВ絳 para1={
'isfrist':"y", //鏄鍚︾涓嬈¤繘鍏ョ綉絝
'fristTime': fristTime, //絎涓嬈¤繘鍏ョ綉絝欑殑鏃墮棿
'system':system, //嫻忚堝櫒絝鎿嶄綔緋葷粺綾誨瀷
'color':color,//棰滆壊 32 bit
'ratio':ratio,//灞忓箷鍒嗚鯨鐜
'typ':typ,//嫻忚堝櫒鐨勭被鍨
'lan':lan,//嫻忚堝櫒鐨勮璦
'dist':dist,//瀹㈡埛絝鐨勬椂鍖
'entrance':entrance,//鐢ㄦ埛榪涘叆緗戠珯鐨勯〉闈㈠湴鍧
'source':source//鐢ㄦ埛鏉ユ簮錛実oogle鎴朾ai鎼滅儲
}
鍙傛暟鐨勫奸兘宸茬粡寰楀埌錛屽綋欏甸潰鍒濇″姞杞界殑鏃跺欙紝璋冪敤浠ヤ笅鍑芥暟錛
window.onload=recordPara;//鐢ㄦ埛鍒濇¤繘鍏ラ〉闈㈡椂鍔犺澆鐨勫嚱鏁
window.onunload=sendPara;//鐢ㄦ埛紱誨紑欏甸潰鏃剁殑璋冪敤鐨勫嚱鏁
function recordPara(){
if(get_cookie("load")=="") { //鍒ゆ柇鐢ㄦ埛鏄鍚︽槸絎涓嬈¤繘鍏ョ綉絝欙紝濡傛灉鏄錛屾庡湪絎涓嬈″姞杞介〉闈㈢殑鏃跺欙紝鍚戞湇鍔″櫒鍙戦佽鋒眰錛
$.getJSON(userSite+'cartInfo.php?jsoncallback=?',para1,function(data){
alert(data);
if(data){
alert("first go in");
}
})
}
else {
enterTime=getDate();//榪涘叆欏甸潰鏃墮棿
current=getUserInfo("current"); //鑾峰彇鐢ㄦ埛褰撳墠嫻忚堢殑欏甸潰
}
}
鑰屽綋欏甸潰紱誨紑鏃訛紝璋冪敤
function sendPara(){
leaveTime=getDate();//紱誨紑欏甸潰鏃墮棿
if(get_cookie("load")==""){ //鍒ゆ柇鏄鍚︽槸絎涓嬈$誨紑欏甸潰
enterTime=leaveTime;
document.cookie="load=yes";
}
var para2={
'isfrist':"n",//鏄鍚︽槸絎涓嬈¤繘鍏ラ〉闈
'enterTime':enterTime,
'current':current,
'leaveTime':leaveTime
};
$.getJSON(userSite+'cartInfo.php?jsoncallback=?',para2,function(data){
alert("second");
if(data){
alert("鍙戦佹垚鍔!");
}
})
}
鏈嶅姟鍣ㄧ錛
$i=$_GET['isfrist'];
if ( $i == 'y' ) {
$fristTime=$_GET['fristTime'];
$system=$_GET['system'];
$color=$_GET['color'];
$ratio=$_GET['ratio'];
$type=$_GET['typ'];
$lan=$_GET['lan'];
$dist=$_GET['dist'];
$entrance=$_GET['entrance'];
$source=$_GET['source'];
//鎻掑叆鏁版嵁搴
echo json_encode($i);
}
if( $i == 'n') {
$enterTime=$_GET['enterTime'];
$current=$_GET['current'];
$leaveTime=$_GET['leaveTime'];
//鎻掑叆鏁版嵁搴
echo json_encode('y');
}
鑰岀幇鍦錛実etJSON鍥炶皟鍑芥暟娌℃湁榪斿洖鍊礆紝浣嗘湇鍔″櫒絝鑳芥帴鍙楀弬鏁幫紝騫朵笖鎻掑叆鏁版嵁搴擄紱鑰岀粡榪囨祴璇曞湪ie錛宖irefox涓榪愯屾e父錛岃屽湪safari鍜実oogle嫻忚堝櫒涓錛岃繘鍏ヤ笅涓涓欏甸潰錛岀誨紑涓婁竴涓欏甸潰錛坥nunload錛夋暟鎹娌℃湁鍙戦佸埌鏈嶅姟鍣ㄧ錛岃屽綋鍏抽棴嫻忚堝櫒鏃舵墠鍙戦佸埌鏈嶅姟鍣ㄣ傛湁闂棰樿瘋拷闂,鏈夊府鍔,鏈涢噰綰.
D. 濡備綍灝唈son鏁版嵁杞鍖栦負鏁版嵁搴撴枃浠
浠巎son鏁扮粍涓寰楀埌java鏁扮粍錛屽彲浠ュ硅ユ暟緇勮繘琛岃漿鍖栵紝濡傚皢JSONArray杞鍖栦負String鍨嬨丩ong鍨嬨丏ouble鍨嬨両nteger鍨嬨丏ate鍨嬬瓑絳夈
鍒嗗埆閲囩敤jsonArray涓嬬殑getString(index)銆乬etLong(index)銆乬etDouble(index)銆乬etInt(index)絳夋柟娉曘
鍚屾牱錛屽傛灉瑕佽幏鍙杍ava鏁扮粍涓鐨勫厓緔狅紝鍙闇瑕侀亶鍘嗚ユ暟緇勩
Java浠g爜 鏀惰棌浠g爜
/**
* 灝唈son鏁扮粍杞鍖栦負Long鍨
* @param str
* @return
*/
public static Long[] getJsonToLongArray(String str) {
JSONArray jsonArray = JSONArray.fromObject(str);
Long[] arr=new Long[jsonArray.size()];
for(int i=0;i<jsonArray.size();i++){
arr[i]=jsonArray.getLong(i);
System.out.println(arr[i]);
}
return arr;
}
/**
* 灝唈son鏁扮粍杞鍖栦負String鍨
* @param str
* @return
*/
public static String[] getJsonToStringArray(String str) {
JSONArray jsonArray = JSONArray.fromObject(str);
String[] arr=new String[jsonArray.size()];
for(int i=0;i<jsonArray.size();i++){
arr[i]=jsonArray.getString(i);
System.out.println(arr[i]);
}
return arr;
}
/**
* 灝唈son鏁扮粍杞鍖栦負Double鍨
* @param str
* @return
*/
public static Double[] getJsonToDoubleArray(String str) {
JSONArray jsonArray = JSONArray.fromObject(str);
Double[] arr=new Double[jsonArray.size()];
for(int i=0;i<jsonArray.size();i++){
arr[i]=jsonArray.getDouble(i);
}
return arr;
}
/**
* 灝唈son鏁扮粍杞鍖栦負Date鍨
* @param str
* @return
*/
public static Date[] getJsonToDateArray(String jsonString) {
JSONArray jsonArray = JSONArray.fromObject(jsonString);
Date[] dateArray = new Date[jsonArray.size()];
String dateString;
Date date;
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
for (int i = 0; i < jsonArray.size(); i++) {
dateString = jsonArray.getString(i);
try {
date=sdf.parse(dateString);
dateArray[i] = date;
} catch (Exception e) {
e.printStackTrace();
}
}
return dateArray;
}
public static void main(String[] args) {
JSONArray jsonLongs = new JSONArray();
jsonLongs.add(0, "111");
jsonLongs.add(1, "222.25");
jsonLongs.add(2, new Long(333));
jsonLongs.add(3, 444);
Long[] log=getJsonToLongArray(jsonLongs.toString());
for(int i=0;i<log.length;i++){
System.out.println(log[i]);
}
JSONArray jsonStrs = new JSONArray();
jsonStrs.add(0, "2011-01-01");
jsonStrs.add(1, "2011-01-03");
jsonStrs.add(2, "2011-01-04 11:11:11");
Date[] d=getJsonToDateArray(jsonStrs.toString());
for(int i=0;i<d.length;i++){
System.out.println(d[i]);
}
}
/*緇撴灉濡備笅錛
* 111
* 222
* 333
* 444
*
* Sat Jan 01 00:00:00 CST 2011
* Mon Jan 03 00:00:00 CST 2011
* Tue Jan 04 00:00:00 CST 2011
*/