最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL更新存放JSON的字段、\“ 轉(zhuǎn)義成 “的問題描述

 更新時(shí)間:2022年12月20日 11:21:22   作者:七海健人  
本篇介紹在執(zhí)行MySQL線上變更時(shí)遇到的問題,表現(xiàn)為"更新JSON字段時(shí),實(shí)際更新的值與SQL語(yǔ)句中的值不一致,JSON格式錯(cuò)誤",本文給大家分享問題描述及解決方案,感興趣的朋友一起看看吧

本篇介紹在執(zhí)行MySQL線上變更時(shí)遇到的問題,表現(xiàn)為"更新JSON字段時(shí),實(shí)際更新的值與SQL語(yǔ)句中的值不一致,JSON格式錯(cuò)誤",如下;

問題描述

處理線上問題,需要新插入一條記錄;將原JSON粘貼出來,修改部分字段,然后提交SQL更新語(yǔ)句,原始JSON如下:

{
    "playerQualifyType": 1,
    "surveyId": 14,
    "playerRegisterEndTime": 1670860799000,
    "planName": "《碧藍(lán)大陸》先鋒測(cè)試招募!",
    "planStatus": 2,
    "playerRegisterStartTime": 1669860000000,
    "gameName": "碧藍(lán)大陸",
    "developerName": "海南羽弘信息技術(shù)有限公司",
    "planStartTime": 1673316000000,
    "qualificationCodeUrl": "",
    "updateTime": 1669777099000,
    "planPlayerNum": 1500,
    "extend": "{\"innerDesc\":\"\",\"planId\":16,\"verifyOperator\":\"Akira-11126666\",\"verifyResultDesc\":\"\",\"verifyResultDescImgList\":[],\"verifyResultStatus\":2,\"verifyTime\":1669777099887}",
    "planEndTime": 1673884800000,
    "pkgStatus": 0
}

現(xiàn)提交SQL變更單,執(zhí)行SQL語(yǔ)句如下:

update t set `json_field` = 
'
{
    "playerQualifyType": 1,
    "surveyId": 14,
    "playerRegisterEndTime": 1670860799000,
    "planName": "《碧藍(lán)大陸》先鋒測(cè)試招募!",
    "planStatus": 2,
    "playerRegisterStartTime": 1669860000000,
    "gameName": "碧藍(lán)大陸",
    "developerName": "海南羽弘信息技術(shù)有限公司",
    "planStartTime": 1673316000000,
    "qualificationCodeUrl": "",
    "updateTime": 1669777099000,
    "planPlayerNum": 1500,
    "extend": "{\"innerDesc\":\"\",\"planId\":16,\"verifyOperator\":\"Akira-11126666\",\"verifyResultDesc\":\"\",\"verifyResultDescImgList\":[],\"verifyResultStatus\":2,\"verifyTime\":1669777099887}",
    "planEndTime": 1673884800000,
    "pkgStatus": 0
}
'
where id = 55;

結(jié)果數(shù)據(jù)庫(kù)中更新后查出來的紀(jì)錄如下,不滿足JSON格式了,仔細(xì)檢查發(fā)現(xiàn)是extend字段的值中的反斜杠全部沒有了,JSON解析失敗;

{
    "playerQualifyType": 1,
    "surveyId": 14,
    "playerRegisterEndTime": 1670860799000,
    "planName": "《碧藍(lán)大陸》先鋒測(cè)試招募!",
    "planStatus": 2,
    "playerRegisterStartTime": 1669860000000,
    "gameName": "碧藍(lán)大陸",
    "developerName": "海南羽弘信息技術(shù)有限公司",
    "planStartTime": 1673316000000,
    "qualificationCodeUrl": "",
    "updateTime": 1669777099000,
    "planPlayerNum": 1500,
    "extend": "{"innerDesc":"","planId":16,"verifyOperator":"Akira-11126666","verifyResultDesc":"","verifyResultDescImgList":[],"verifyResultStatus":2,"verifyTime":1669777099887}",
    "planEndTime": 1673884800000,
    "pkgStatus": 0
}

問題排查

聯(lián)系DBA描述問題,得到的回復(fù)是——

\"相當(dāng)于就轉(zhuǎn)義成 "了,這是MySQL自身處理的結(jié)果;

實(shí)驗(yàn)如下:

而代碼中執(zhí)行的就沒問題,原因是代碼中該字段對(duì)應(yīng)的Java類型為String,也就是說原JSON的外層因?yàn)樘琢艘粚与p引號(hào)"",因此還會(huì)有一次轉(zhuǎn)義符的嵌套,如下;

\"extend\":\"{\\\"innerDesc\\\":\\\"\\\",\\\"planId\\\":16,\\\"verifyOperator\\\":\\\"Akira-11126666\\\",\\\"verifyResultDesc\\\":\\\"\\\",\\\"verifyResultDescImgList\\\":[],\\\"verifyResultStatus\\\":2,\\\"verifyTime\\\":1669777099887}\"

因此,代碼中執(zhí)行JSON字符串的MySQL插入,實(shí)際入庫(kù)的值與預(yù)期一致;正確的SQL如下:

update t set `json_field` = 
'
{\"playerQualifyType\":1,\"surveyId\":14,\"playerRegisterEndTime\":1670860799000,\"planName\":\"《碧藍(lán)大陸》先鋒測(cè)試招募!\",\"planStatus\":2,\"playerRegisterStartTime\":1669860000000,\"gameName\":\"碧藍(lán)大陸\",\"developerName\":\"海南羽弘信息技術(shù)有限公司\",\"planStartTime\":1673316000000,\"qualificationCodeUrl\":\"\",\"updateTime\":1669777099000,\"planPlayerNum\":1500,\"extend\":\"{\\\"innerDesc\\\":\\\"\\\",\\\"planId\\\":16,\\\"verifyOperator\\\":\\\"Akira-11126666\\\",\\\"verifyResultDesc\\\":\\\"\\\",\\\"verifyResultDescImgList\\\":[],\\\"verifyResultStatus\\\":2,\\\"verifyTime\\\":1669777099887}\",\"planEndTime\":1673884800000,\"pkgStatus\":0}
'
where id = 55;

解決方案

在更新Mysql表的JSON字符串字段時(shí),步驟應(yīng)該如下:

1. 輸入查詢語(yǔ)句,找到目標(biāo)記錄,復(fù)制JSON字段的值到JSON編輯工具中修改JSON中的屬性值

2. 將修改后的JSON粘貼到IDE中,IDE用雙引號(hào)接收這一串JSON;

3. 執(zhí)行SQL時(shí),SQL語(yǔ)句中的值以IDE中被雙引號(hào)包裹的字符串值為SQL中的新的value;

    // 將JSON粘貼進(jìn)來 整體作為SQL更新語(yǔ)句中的新的value 這里也可以不格式化JSON
    String formatValue = "{\n" +
            "    \"playerQualifyType\": 1,\n" +
            "    \"surveyId\": 14,\n" +
            "    \"playerRegisterEndTime\": 1670860799000,\n" +
            "    \"planName\": \"《碧藍(lán)大陸》先鋒測(cè)試招募!\",\n" +
            "    \"planStatus\": 2,\n" +
            "    \"playerRegisterStartTime\": 1669860000000,\n" +
            "    \"gameName\": \"碧藍(lán)大陸\",\n" +
            "    \"developerName\": \"海南羽弘信息技術(shù)有限公司\",\n" +
            "    \"planStartTime\": 1673316000000,\n" +
            "    \"qualificationCodeUrl\": \"\",\n" +
            "    \"updateTime\": 1669777099000,\n" +
            "    \"planPlayerNum\": 1500,\n" +
            "    \"extend\": \"{\\\"innerDesc\\\":\\\"\\\",\\\"planId\\\":16,\\\"verifyOperator\\\":\\\"Akira-11126666\\\",\\\"verifyResultDesc\\\":\\\"\\\",\\\"verifyResultDescImgList\\\":[],\\\"verifyResultStatus\\\":2,\\\"verifyTime\\\":1669777099887}\",\n" +
            "    \"planEndTime\": 1673884800000,\n" +
            "    \"pkgStatus\": 0\n" +
            "}";
    
    // 未格式化 會(huì)少去/n換行符
    String value = "{\"playerQualifyType\":1,\"surveyId\":14,\"playerRegisterEndTime\":1670860799000,\"planName\":\"《碧藍(lán)大陸》先鋒測(cè)試招募!\",\"planStatus\":2,\"playerRegisterStartTime\":1669860000000,\"gameName\":\"碧藍(lán)大陸\",\"developerName\":\"海南羽弘信息技術(shù)有限公司\",\"planStartTime\":1673316000000,\"qualificationCodeUrl\":\"\",\"updateTime\":1669777099000,\"planPlayerNum\":1500,\"extend\":\"{\\\"innerDesc\\\":\\\"\\\",\\\"planId\\\":16,\\\"verifyOperator\\\":\\\"Akira-11126666\\\",\\\"verifyResultDesc\\\":\\\"\\\",\\\"verifyResultDescImgList\\\":[],\\\"verifyResultStatus\\\":2,\\\"verifyTime\\\":1669777099887}\",\"planEndTime\":1673884800000,\"pkgStatus\":0}";

到此這篇關(guān)于MySQL更新存放JSON的字段、\“ 轉(zhuǎn)義成 “的文章就介紹到這了,更多相關(guān)MySQL JSON轉(zhuǎn)義內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

深圳市| 金平| 洛南县| 长岭县| 孟村| 唐河县| 民县| 廉江市| 沐川县| 璧山县| 贞丰县| 晋宁县| 凯里市| 潢川县| 巴林左旗| 蓝山县| 来宾市| 习水县| 金昌市| 当涂县| 微博| 响水县| 太谷县| 唐海县| 林周县| 湘潭市| 苏尼特左旗| 德兴市| 乌审旗| 广灵县| 福贡县| 东平县| 罗甸县| 景德镇市| 格尔木市| 海兴县| 六安市| 任丘市| 安庆市| 察雅县| 泸水县|