在 excel VBA 中,如何撰寫自定義函式將范圍轉換為 json 陣列?
我現在只有函式簽名:
Function to_json(input As Range)
End Function
我需要在以下前者中將輸入轉換為 json 陣列
[
[4,"foo"],
["bar",5]
]
我怎么辦?
最終目標是將 json 發布到 Web 服務,以類似格式獲取回應并將其作為范圍物件回傳
編輯:輸入范圍可以包括數字和字串的任意組合。我需要將這些復制到一個二維 json 陣列,如示例中所示。請注意,我需要 json 陣列而不是 json 物件。
我用谷歌搜索了一段時間,但找不到任何明顯的答案
編輯2:在js中,答案很簡單:JSON.stringify(input),是否有一個簡單的vba等價物?
uj5u.com熱心網友回復:
對于全面的解決方案,請使用 JsonConverter 但對于簡單的特定案例,請嘗試
Function to_json(rng As Range)
Dim ar, v, i As Long, j As Long, qq As String
Dim js As String, r As String
qq = Chr(34)
ar = rng.Value
For i = 1 To UBound(ar)
r = "["
For j = 1 To UBound(ar, 2)
v = ar(i, j)
'Debug.Print i, j, v, VarType(v)
Select Case VarType(v)
Case vbError
v = ""
Case vbNull, vbEmpty
v = "null"
Case vbDate
v = qq & Format(v, "yyyy-mm-dd") & qq
Case vbString
v = qq & Replace(v, qq, "\" & qq) & qq
Case Else
End Select
If Len(r) > 1 Then r = r & ","
r = r & v
Next
r = r & "]"
If Len(js) > 0 Then js = js & ","
js = js & r
Next
to_json = "[" & js & "]"
End Function
uj5u.com熱心網友回復:
感謝大家推薦 github.com/VBA-tools/VBA-JSON。這是完整的解決方案以供將來參考:
- 按照https://github.com/VBA-tools/VBA-JSON 中的描述安裝 JsonConverter
- 完成代碼(注意.value):,
Function to_json(input As Range)
to_json = JsonConverter.ConvertToJson(input.Value)
End Function
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/401790.html
