Excel VBA 创建 json 有效负载

2023-12-14

我正在使用 Excel VBA 并调用外部 REST API。调用需要 json 格式的有效负载。我在创建 json 格式时遇到问题。

{
   "customerContext": {
      "identifiers": [
         {
            "apiName": "email",
            "value": "[email protected]"
         }
      ],
      "baseTouchpointUri": "physical://webinar"
   },
   "activities": [
      {
         "propositionCode": "Homepage",
         "activityTypeCode": "ATTEND_ROADSHOW",
         "timestamp": "2019-12-27T10:31:40Z"
      }
   ]
}

vba代码如下:

Sub UploadOfflineInteraction()

    Dim apiName As String
    Dim apiName_value As String
    Dim baseTouchpoint As String
    Dim propositionCode As String
    Dim activityTypeCode As String
    Dim timestamp As String
    Dim NoOfRows As Integer
    Dim i As Integer


    ActiveWorkbook.Worksheets("Data").Activate
    NoOfRows = ActiveWorkbook.Worksheets("Data").Range("A2").End(xlDown).row

    For i = 1 To NoOfRows
        apiName = ActiveWorkbook.Worksheets("Data").Cells(i, 1).Value
        apiName_value = ActiveWorkbook.Worksheets("Data").Cells(i, 2).Value
        baseTouchpoint = ActiveWorkbook.Worksheets("Data").Cells(i, 3).Value
        propositionCode = ActiveWorkbook.Worksheets("Data").Cells(i, 4).Value
        activityTypeCode = ActiveWorkbook.Worksheets("Data").Cells(i, 5).Value
        timestamp = ActiveWorkbook.Worksheets("Data").Cells(i, 6).Value
        Dim tid
        tid = SentOfflineInteraction(apiName, apiName_value, baseTouchpoint, propositionCode, activityTypeCode, timestamp)
    Next i

End Sub

Function SentOfflineInteraction(apiName As String, apiName_value As String, _
              baseTouchpoint As String, propositionCode As String, _
              activityTypeCode As String, timestamp As String) As String

    Dim c As Collection
    Dim d As Dictionary
    Dim e As Dictionary
    Dim f As Dictionary
    Dim json As String

    Set c = New Collection
    Set d = New Dictionary
    Set e = New Dictionary
    Set f = New Dictionary

    d.Add "propositionCode", propositionCode
    d.Add "activityTypeCode", activityTypeCode
    d.Add "timestamp", timestamp
    c.Add d
    f.Add "activities", c

    Dim c1 As Collection
    Dim d1 As Dictionary
    Dim e1 As Dictionary
    Dim f1 As Dictionary

    Set c1 = New Collection
    Set d1 = New Dictionary
    Set e1 = New Dictionary
    Set f1 = New Dictionary

    d1.Add "apiName", apiName
    d1.Add "value", apiName_value
    c1.Add d1
    f1.Add "identifiers", c1

    Dim c2 As Collection
    Dim d2 As Dictionary
    Dim e2 As Dictionary
    Dim f2 As Dictionary

    Set c2 = New Collection
    Set d2 = New Dictionary
    Set e2 = New Dictionary
    Set f2 = New Dictionary

    d2.Add f1
    d2.Add "baseTouchpointUri", baseTouchpoint
    c2.Add d2
    f2.Add "customerContext", c2


    Dim c3 As Collection
    Dim d3 As Dictionary
    Dim e3 As Dictionary
    Dim f3 As Dictionary

    Set c3 = New Collection
    Set d3 = New Dictionary
    Set e3 = New Dictionary
    Set f3 = New Dictionary

    d3.Add f2
    d3.Add f1
    c3.Add d3

    json = JsonConverter.ConvertToJson(ByVal c3)

    Debug.Print json

End Function

我面临的问题是如何创建这个 json 有效负载。以下结构在 d2 处失败。添加 f1

你能让我知道如何构建这个 json


使用一些辅助函数来简化构造:

Sub UploadOfflineInteraction()

    Dim i As Long, cntxt As Object, act As Object, o As Object

    With ActiveWorkbook.Worksheets("Data")
        For i = 1 To .Cells(.rows.Count, 1).End(xlUp).Row
            With .rows(i)
                Set cntxt = jsonobject("identifiers", _
                                       jsonarray(jsonobject("apiName", .Cells(1).Value, _
                                                            "value", .Cells(2).Value)), _
                                       "baseTouchpointUri", .Cells(3).Value)

                Set act = jsonarray(jsonobject("propositionCode", .Cells(4).Value, _
                                               "activityTypeCode", .Cells(5).Value, _
                                               "timestamp", .Cells(6).Value))


                Set o = jsonobject("customerContext", cntxt, "activities", act)

                Debug.Print JsonConverter.ConvertToJson(o, 2)

            End With
        Next i
    End With

End Sub


'return a dictionary given a paramarray of key_1,value_1,...,key_n,value_n
Function jsonobject(ParamArray keyvals()) As Object
    Dim rv As Object, n As Long
    Set rv = CreateObject("scripting.dictionary")
    For n = LBound(keyvals) To UBound(keyvals) Step 2
        rv.Add keyvals(n), keyvals(n + 1)
    Next n
    Set jsonobject = rv
End Function
'return a collection from a paramarray of values
Function jsonarray(ParamArray vals()) As Collection
    Dim rv As New Collection, n As Long
    For n = LBound(vals) To UBound(vals)
        rv.Add vals(n)
    Next n
    Set jsonarray = rv
End Function
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Excel VBA 创建 json 有效负载 的相关文章

  • 在 JSON 对象中存储和发送原始文件数据

    我正在寻找一种方法来传输任何文件类型的原始文件数据和任何可能的内容 我的意思是文件和文件内容都是用户生成的 在 Backbone 前端中使用 xhr ajax 调用两种方式针对 Django 后端 编辑 也许问题仍然不清楚 如果您在 IDE
  • VSTS部署IIS应用程序winrm并更改appsettings.json

    我正在使用 部署 IIS 应用程序 winrm 任务在另一台计算机上部署 IIS 应用程序 此任务部署 zip 文件 在此 zip 中有一个 appsettings json 其变量以下划线开头和结尾 我需要替换每个环境的 appsetti
  • 读取完 JSON 内容和意外标记后遇到的其他文本(在我的 json 中)

    我使用 JSON Net 创建的 json feed 遇到一些问题 当我尝试解析它时 它给了我 读取完 JSON 内容后遇到的附加文本 路径 第 17 行 位置 4 我尝试用以下方法验证它http json parser online fr
  • 如何通过填充 NSDictionary 以 JSON 格式发送 UIImage

    我正在尝试使用 JSON 将数据发送到服务器 我可以使用我的对象和关键参数创建 NSDictionary 但我想发送我的图片 图片是UIImage NSDictionary mainJSON NSDictionary dictionaryW
  • 将复杂对象传递到 WCF Rest 服务

    我有一个接受复杂对象的操作合约 并且我通过 jQuery 调用该操作 如何使用 jQuery 传递像这样的复杂类型对象 以下是操作签名 public Resolution CreateNewResolution Resolution New
  • 如何在缩进层次结构中找到父级?

    我目前有一张 Excel 工作表 其中包含缩进的项目层次结构 如下所示 每个项目都缩进 每个缩进四个空格 以显示它如何适应整体层次结构 我已经能够创建一个 级别 列 将缩进级别转换为数字 Item Level Parent P1 1 N A
  • 使用宏从 Excel 电子表格中删除任何非指定字符

    我正在尝试通过删除任何非标准字符来清理 Excel 中的 CSV 文件 我唯一关心保留的字符是 A Z 0 9 和一些标准标点符号 任何其他字符 我想删除 当它找到包含我未指定的任何字符的单元格时 我已经得到了以下宏来删除整行 但我不确定如
  • 如何在 Angular 2 karma jasmine 测试中从 JSON 文件加载模拟数据?

    我在写信业力茉莉花测试用例角2 我们遇到了在单独的 JSON 文件中模拟数据的需求 因为数据很大 希望确保代码整洁 为此我进行了很多搜索但没有找到合适的解决方案 我们已经使用以下方式模拟 HTTP 服务模拟后端 所以我们不能使用Angula
  • 使用 C++ 访问 Azure blob 存储 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Python:json_normalize pandas 系列给出 TypeError

    我在 pandas 系列中有数万行像这样的 json 片段df json IDs lotId 1 Id 123456 date 2009 04 17 bidsCount 2 IDs lotId 2 Id 123456 date 2009 0
  • 使用 Excel VBA 循环工作簿文件夹并将所有工作表导出为制表符分隔文本

    我拼凑了一个 Excel VBA 脚本 该脚本将打开的工作簿中的所有工作表写入单独的制表符分隔文件 这仍然是 宏 吗 我正在 Excel 真空中学习这一点 它一次只处理一本工作簿 效果很好 这里是 Sub exportSheetsToTex
  • 字符串在换行符处拆分

    我在 MS Access 表单上有一个文本框 用户将从 Excel 电子表格中复制一列数字到其中 我需要获取此输入并将其用作参数来构建查询 我的代码看起来像这样 Dim data as variant Dim input as String
  • 在 Django 模板中通过键访问字典

    我正在将字典从我的视图传递到模板 所以 key1 value1 key2 value2 传入并循环键 值对很好 但是我还没有找到从特定键直接在视图中访问的优雅解决方案 例如 key1 例如 bu json items key1 我可以使用一
  • python XlsxWriter 设置多个单元格周围的边框

    I need an easy way to set border around multiple cells like so 我发现的只是 1 个单元格的边框 并合并单元格 这不是我需要的 我期待类似的事情 worksheet range
  • 将MongoDb atlas数据库导出到本机Mongo compass

    我在 Atlas 中有一个名为 test 的远程数据库 我想将集合名称 image table 下载为 JSON 文件 在 Mac 终端中 mongoexport db test collection image table image j
  • 解析“流”JSON

    我在浏览器中有一个网格 我想通过 JSON 将数据行发送到网格 但浏览器应该在接收到 JSON 时不断解析它 并在解析时将行添加到网格中 换句话说 在接收到整个 JSON 对象后 不应将行全部添加到网格中 应该在接收到行时将其添加到网格中
  • 勾选或取消勾选复选框时输入时间戳

    我有一个 3 行 7 列的工作表 A1 G3 A 和 B 列有 6 个复选框 A1 B3 A 列和 B 列中的框分别链接到 C 列和 D 列 E 列和 F 列中的单元格只是分别复制 C 列和 D 列 实时E1细胞是 C1 and F3细胞是
  • 在 Excel 中查找结果将行复制到另一张工作表

    我需要一些帮助将数据从一个 Excel 工作表复制到另一个 例如 样本数据 A B C 1 aaa bbb ddd 2 bbb ccc eee 2 bbb ccc eee 3 ccc fff rrr 4 ccc fff ttt 5 ddd
  • 如何在谷歌地图android上显示多个标记

    我想在谷歌地图android上显示带有多个标记的位置 问题是当我运行我的应用程序时 它只显示一个位置 标记 这是我的代码 public class koordinatTask extends AsyncTask
  • 使用 Ajax 请求作为源数据的 Jquery 自动完成搜索

    我想做的事 我想使用 jquery 自动完成函数创建一个输入文本字段 该函数从跨域curl 请求获取源数据 结果应该与此示例完全相同 CSS 在这里并不重要 http abload de img jquerydblf5 png http a

随机推荐

  • 来自私人 github 存储库的 npm 包,安装与更新 (package.json)

    我已经看到这个问题了npm install vs update 有什么区别 我的问题是关于使用安装与更新私人 github 存储库git urls 我有一个在 grunt 中使用的私人 github 存储库 该存储库经常更新 我使用安装了这
  • 正则表达式允许字母数字、最多一个空格等

    我正在打开这个线程 该线程与另一个线程非常相似 但我无法找出问题 我有一个输入字段 允许字母数字字符串与可选的唯一空格作为分隔符 然后是可选的其他字母数字字符串等 我找到这个正则表达式 0 9a zA z 有用 但是 当我在一个长句子中出现
  • 从 URL 展开特定的折叠式

    如果我使用地址 www xxxxxx com test html chgd 第二个手风琴应该展开 我使用了这个网站的源代码 Bootstrap 3从URL扩展手风琴 但它在这种情况下不起作用 我不知道基于源代码来扩展第二个基于URL的手风琴
  • 将时间浮点转换为 HH:mm sql server 格式

    我需要将浮点十进制数格式化为时间格式小时 分钟 我用输入 float 和输出 varchar 6 编写了这个标量值函数 CREATE FUNCTIONE formatOre input float returns varchar 6 as
  • 类型错误:在字符串格式化过程中并非所有参数都被转换元组 python 中的错误

    我试图在数据库中保存一堆元组 cursor cnx cursor query INSERT INTO TableA clientid createddatetime siteid VALUES cursor executemany quer
  • 套接字多线程 - 读取输入流暂停线程

    我正在本地机器上测试套接字 我正在尝试使用线程在一个程序中运行套接字和服务器 我的服务器是一个回显服务器 因此它会发回收到的任何消息 我的问题是 当我在客户端和服务器上启动两个线程时 当它们到达我从输入流读取的部分时 它们会 冻结 它在客户
  • 无法发布错误 React js

    我收到一个有错误的空白页无法发布 注册 第二步 我正在尝试创建多步骤注册 我的主要组件的渲染函数如下 render const languageReg this props currentLanguage default registrat
  • mailto 不可读的字符 - unicode

    我在网站中使用 mailto URI 方案通过电子邮件发送当前页面 问题是我使用印地语作为 mailto 链接的主题 Example a href Testing a 单击链接时 Outlook 版本 6 将打开 并显示一些不可读的字符作为
  • 如何使用 PhoneGap 将图像保存到 iPhone 照片库?

    我正在为 iPhone 创建一个 PhoneGap 应用程序 用于显示图像库 有些图像包含在项目安装中 有些来自网络 当用户单击图像时 我希望他们能够将图像保存到 iPhone 照片库 照片 最初 我希望该应用程序能够让用户将图像设置为壁纸
  • 如何删除 DOM 元素标签但保留其内容?

    我有 PHP 代码 它删除至少具有一个属性的所有节点 Here是我的代码
  • 为什么可以通过使用指向对象成员的指针的 const 成员函数来修改对象状态?

    为什么此代码不会产生编译器错误 class C int i 123 int ptr i public int i const return ptr int main C const c c i 321 return c i 标准中有关于这种
  • Spring Boot 在请求正文中转义字符以实现 XSS 保护

    我正在尝试使用 XSSFilter 来保护我的 Spring Boot 应用程序 如下所示 public class XSSFilter implements Filter Override public void init FilterC
  • Python找出已编译模块的内容?

    所以有了这个 Python pyd 模块 C 所以我不能只在文本编辑器中打开它来找出它包含的内容 那我该怎么办呢 我只是想知道里面的函数名称 Python有完整的反射 您可以执行以下操作 对于 modulename pyd python g
  • 不同能力的用户

    我正在创建一个 ASP Net MVC 5 应用程序 在我的网站中 存在 3 种不同类型的用户 Admin 普通用户 餐厅 每个用户都有自己的能力和访问权限 意思是 他们每个人的观点应该不同 我已经为普通餐厅和餐厅创建了模型 我想知道如何修
  • 如何使用宏作为其他宏参数列表之一

    这是一个虚拟示例 define DEFINE STRUCTURE Result Structure a b c int a define MEMBER INT name width Int name width 当我在做的时候 DEFINE
  • MySQL JOIN 返回 NULL 字段

    我正在尝试运行下面的脚本 但总是获得名称字段的 NULL 值 SELECT u name AS user name s name AS school name FROM fwg files AS f LEFT JOIN users AS u
  • 高斯模糊滤镜会导致受影响图像上方的文本被隐藏

    我在尝试模糊图像时遇到问题CSS在我的网页上 受影响图像上方呈现的任何元素都将在该过程期间和之后隐藏 我该如何解决这个问题 有关问题本身的更多信息 我发布了一个片段 其中包含一个具有该确切问题的示例 placeholder display
  • 如何在 Objective C 中每 3 位数字添加逗号?

    如果我有一个号码int aNum 2000000如何格式化它以便我可以将其显示为 NSString 2 000 000 Use NSNumberFormatter 具体来说 NSNumberFormatter formatter NSNum
  • Android Retrofit 返回状态 500 内部服务器错误

    我正在使用像这样的Retrofit来获取所有书籍并删除所有书籍 GET books BookListResponse getAllBooks DELETE clean Response deleteAllBooks 但返回了错误状态 500
  • Excel VBA 创建 json 有效负载

    我正在使用 Excel VBA 并调用外部 REST API 调用需要 json 格式的有效负载 我在创建 json 格式时遇到问题 customerContext identifiers apiName email value email