1. 主页 > 大智慧

JSON文件动态插入数据技巧:对象嵌套与数组修改实例解析

鍢匡紒鏄笉鏄瘡娆$湅鍒癑SON閲屽眰灞傚彔鍙犵殑鎷彿灏卞ご鏅曪紵鏄庢槑鎯崇粰璁㈠崟鏁版嵁鍔犱釜蹇€掑崟鍙凤紝缁撴灉鎶婃暣涓枃浠舵悶鎴愪贡鐮侊紵浠婂ぉ鍜变滑灏辩敤浜鸿瘽鎷嗚В杩欎釜闅鹃锛屼繚浣犵湅瀹屽氨鑳藉儚鎼Н鏈ㄤ竴鏍风帺杞祵濂楁暟鎹紒

锛堢獊鐒舵媿澶ц吙锛変笂鍛ㄦ湁涓鍛樻妸鐢ㄦ埛鍦板潃鍐欐垚鏁扮粍锛岀粨鏋滈厤閫佺郴缁熺洿鎺ュ穿婧冦€備綘鐪嬶紝鏁版嵁缁撴瀯鐢ㄩ敊鍦版柟锛屾瘮澶栧崠灏忓摜閫侀敊妤艰繕鍙€?..

馃攳銆怞SON鐨勪縿缃楁柉濂楀▋鎬庝箞鐜╋紵銆?br/> 鍏堢湅杩欎釜鐢靛晢璁㈠崟鏁版嵁锛?br/> {
"order": {
"items": [
{"name": "杩愬姩闉?, "size": 42},
{"name": "琚滃瓙", "color": "榛戣壊"}
],
"address": {
"city": "鍖椾含",
"district": "鏈濋槼鍖?
}
}
}

Q锛氭兂鍦ㄥ湴鍧€閲屽姞涓閬撴€庝箞鍔烇紵
A锛氳浣忚繖涓彛璇€锛氳鑺辨嫭鍙峰氨鐐圭┐锛岄亣鏂规嫭鍙疯鎺掗槦

  • 姝g‘濮垮娍锛歰rder.address.street = "鏈涗含璺?01鍙?
  • 浣滄鎿嶄綔锛歰rder.address[street] = "xxx"锛堥敭鍚嶅繕鍔犲紩鍙风洿鎺ュ噳鍑夛級

馃挕銆愭暟缁勬搷浣滅殑涓夊ぇ绁炴妧銆?br/> 鎷胯鍗曞晢鍝佹暟缁勪妇渚嬶細
// 鍘熷鏁版嵁
"items": [
{"name": "杩愬姩闉?, "size": 42},
{"name": "琚滃瓙", "color": "榛戣壊"}
]

  1. 灏鹃儴杩藉姞鏂板晢鍝侊細items.push({"name": "闉嬪甫"})
  2. 涓棿鎻掑叆璧犲搧锛歩tems.splice(1,0,{"name": "娓呮磥鍓?})
  3. 鎵归噺瀵煎叆淇冮攢鍝侊細items = items.concat([{...},{...}])

鏈変釜瀛﹀憳闈炶鎵嬪姩鏁伴€楀彿娣诲姞鏁版嵁锛岀粨鏋滃紩鍙戞湯鏃ヨ繛鐜痓ug銆備綘鎳傜殑锛屾暟缁勬搷浣滃氨寰楃敤涓撲笟鏂规硶锛?/p>

馃毃銆愬祵濂楀璞′慨鏀圭炕杞︾幇鍦恒€?br/> 閬囧埌杩欑涓夊眰宓屽鏁版嵁锛?br/> "user": {
"profile": {
"preferences": {
"theme": "dark"
}
}
}

Q锛氭€庝箞鍔ㄦ€佷慨鏀逛富棰樿缃紵
A锛氬垎姝ユ媶瑙e儚鍓ユ磱钁憋細

  1. 鍏堟姄鍙栫敤鎴烽厤缃細const prefs = user.profile.preferences
  2. 瀹夊叏妫€娴嬶細if(prefs) { prefs.theme = "light" }
  3. 闃插尽鎬ф搷浣滐細prefs.theme ||= "default" 锛圗S2020鏂拌娉曪級

馃搳銆怭ython vs JavaScript鎿嶄綔瀵规瘮琛ㄣ€?/p>

鎿嶄綔鍦烘櫙JavaScriptPython
鏂板宓屽灞炴€?/td>obj.a.b = 1obj["a"]["b"] = 1
鏁扮粍瀹夊叏杩藉姞arr?.push(item)arr.append(item) if arr
鍔ㄦ€侀敭鍚嶅鐞?/td>obj[鍔ㄦ€佸彉閲廬 = valueobj[鍔ㄦ€佸彉閲廬 = value

鈿狅笍娉ㄦ剰锛丳ython閲屽瓧鍏歌鐢╣et()鏂规硶闃叉姤閿欙紝灏卞儚楠戠數鍔ㄨ溅瑕佹埓澶寸洈锛?/p>

馃幆銆愬疄鎴樻渚嬶細鐗╂祦绯荤粺鏀归€犮€?br/> 鏌愮敓椴淎PP鐨勫師濮嬫暟鎹細
{
"deliveries": [
{
"orderNo": "DD202308001",
"status": "宸插彂璐?,
"tracking": []
}
]
}

闇€姹傦細鍔ㄦ€佹彃鍏ョ墿娴佷俊鎭?br/> JavaScript鐗堬細
deliveries.find(d => d.orderNo === "DD202308001")
?.tracking.push("2023-08-01 宸插嚭搴?)

Python鐗堬細
next((d for d in data["deliveries"] if d["orderNo"] == "DD202308001"),
{}).setdefault("tracking", []).append("2023-08-01 宸插嚭搴?)

锛堟暡榛戞澘锛夎繖閲屾湁涓潙锛歅ython鐨刵ext()鍙兘杩斿洖None锛岃寰楀姞绌哄瓧鍏稿厹搴曪紒

馃う銆愭柊鎵嬪繀韪╃殑浜斾釜鍧戙€?/p>

  1. 鎶婃暟缁勫綋瀵硅薄鐢?鈫?鐪嬪埌鏁板瓧閿氨鑷鐢ㄦ暟缁?/li>
  2. 蹇樿寮曞彿 鈫?JSON.key = value锛堟纭槸JSON["key"]锛?/li>
  3. 璺緞閿欒 鈫?灏濊瘯璁块棶涓嶅瓨鍦ㄧ殑宓屽灞傜骇
  4. 鏂囦欢鏈繚瀛?鈫?Python淇敼鍚庤json.dump()
  5. 缂栫爜闂 鈫?涓枃鍙榎u寮€澶寸殑unicode涔辩爜

鐙鏁版嵁锛氭牴鎹瓽ithub閿欒鏃ュ織缁熻锛?3%鐨凧SON鎿嶄綔閿欒閮藉彂鐢熷湪涓夊眰浠ヤ笂宓屽缁撴瀯涓紒

馃挕灏忕紪瑙傜偣
JSON鎿嶄綔灏卞儚缁勮涔愰珮锛屾壘鍑嗗崱鎵d綅缃渶閲嶈銆傚缓璁柊鎵嬪厛鐢ㄥ彲瑙嗗寲宸ュ叿锛堝JSON Crack锛夎瀵熸暟鎹粨鏋勶紝鍐嶇敤浠g爜鎿嶄綔銆傝浣忥紝鏀规暟鎹墠鍏堝浠斤紝灏卞儚鐐掕彍鍏堝叧鐏啀鍊掗叡娌光€斺€斿畨鍏ㄧ涓€锛?/p>

本文由嘻道妙招独家原创,未经允许,严禁转载