数据库只是用来存储数据的,为什么不把处理数据的部分放在后台?
在这里你需要了解以下几个知识点。
在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 
 */