• 週六. 3 月 28th, 2026

天南訊息

IT 工作者的工作紀錄

dBase 2019 的 JSON 類別沒有「自動往上層」的指標

個人頭像照片

By伍芳左

2 月 18, 2026

JSONMEMBER 沒有 parent 屬性
❗ 沒有 back()
❗ 沒有上一層參照

所以——
一旦你一路 .member.member.member 走下去,
你是回不來的。


為什麼回不去?

結構其實是這樣:

js → JSON 物件
└─ member → JSONMEMBER (第一層)
└─ member → JSONMEMBER (第二層)
└─ member → JSONMEMBER (第三層)

但這些 member 之間:

child 沒有 parent 指標

所以:

第三層 → 不知道 第一層是誰

正確做法(標準寫法)

✅ 方法一:永遠重新從 root 開始找

這是最乾淨安全的方法。

js.findMember("subObj")
js.member.findMember("prop1")
? js.member.member.value* 要回到第一層
js.findMember(“ID”)
? js.member.value

不要想回去,
直接重新 find。

這是官方設計邏輯。

✅ 方法二:自己保存上層參考(專業寫法)

如果你要在深層操作後回來:

js.findMember("subObj")
oLevel1 = js.member && 保存第一層
oLevel1.findMember("prop1")
oLevel2 = oLevel1.member
? oLevel2.value
* 要回第一層
? oLevel1.name

你必須「手動保存」。

最佳實務建議(給你這種常寫系統的人)

寫成這種結構最穩定:

function GetJsonValue(oJson, cParent, cChild)
  if oJson.findMember(cParent)
    if oJson.member.findMember(cChild)
      return oJson.member.member.value
    endif
  endif
  return ""

這樣:

  • 永遠從 root 開始

  • 永遠不會迷路

  • 不需要回上層

個人頭像照片

By 伍芳左

MIS, ERP Pro... RHCE Member (7.2)

發表迴響