首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将范围转换为json数组

将范围转换为json数组
EN

Stack Overflow用户
提问于 2022-01-02 02:40:59
回答 2查看 215关注 0票数 -1

在excel VBA中,如何编写自定义函数将范围转换为json数组?

我现在只有函数签名:

代码语言:javascript
复制
Function to_json(input As Range)

End Function

我需要将输入转换为json数组,如下所示

代码语言:javascript
复制
[
  [4,"foo"],
  ["bar",5]
]

我该怎么做?

它的最终目标是将json发布到web服务,以类似的格式获得响应,并将其作为range对象返回。

编辑:输入范围可以包括数字和字符串的任意组合。我需要将它们复制到一个2维的json数组中,如示例所示。注意,我需要json数组,而不是json对象。

我搜索了一段时间,但找不到任何明显的答案。

edit2:在js中,答案非常简单:JSON.stringify(输入),是否有一个简单的vba等效?

EN

回答 2

Stack Overflow用户

发布于 2022-01-02 14:02:03

对于全面的解决方案,请使用JsonConverter,但对于简单的特定情况,请尝试

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

发布于 2022-01-02 17:46:21

感谢大家推荐到github.com/VBA-tools/VBA。以下是供今后参考的完整解决方案:

https://github.com/VBA-tools/VBA-JSON

  • complete中所述的
  1. 安装JsonConverter代码(注意.value):,

代码语言:javascript
复制
Function to_json(input As Range)
  to_json = JsonConverter.ConvertToJson(input.Value)
End Function
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70553265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档