从 VBA 中的 JSON 响应中提取简单值

问题描述 投票:0回答:1

我正在尝试从网站获取简单的响应,并希望将值返回到字段中。

json 看起来与此类似: https://api.sunrise-sunset.org/json?lat=38.725&lng=-9.355&date=2023-08-07

{"results":{"sunrise":"5:42:35 AM","sunset":"7:43:53 PM","solar_noon":"12:43:14 PM","day_length":"14:01:18","civil_twilight_begin":"5:14:59 AM","civil_twilight_end":"8:11:30 PM","nautical_twilight_begin":"4:39:34 AM","nautical_twilight_end":"8:46:54 PM","astronomical_twilight_begin":"4:01:24 AM","astronomical_twilight_end":"9:25:04 PM"},"status":"OK"}

我编写了(在此处找到)一个函数来获取此数据:

Function GetSun(lat,lon As Double, dateinput As Date) As String
Dim url as String
url = "https://api.sunrise-sunset.org/json?lat=" & lat & "&lng=" & lon & "&date=" & dateinput

On Error GoTo ErrorHandler

Dim funtionAccess As Object
functionAccess = createUnoService("com.sun.star.sheet.FunctionAccess")

GetSun = functionAccess.callFunction("WEBSERVICE",Array(url))

Exit Function
ErrorHandler:
GetSun = "Error " & Err
End Function

在单元格中现在有:

C12 = 纬度信息

C13 = 经度信息

B6 = 日期

=GETSUN(C12,C13,B6)

但我想要的是:(我可以在其中定义返回的字段)

=GETSUN(C12,C13,B6,sunrise)

返回:

5:42:35 AM

还有

=GETSUN(C12,C13,B6,sunset)

返回:

7:43:53 PM

如果重要的话:Linux Mint 笔记本电脑上的 libreoffice calc

vba libreoffice-calc
1个回答
0
投票

将 Json 字符串传递给两个使用

Split
提取值的辅助函数:

Public Function GetSunrise(ByVal SunData As String) As String

    GetSunrise = Split(Split(SunData, """sunrise"":""", 2)(1), """,""", 2)(0)

End Function

Public Function GetSunset(ByVal SunData As String) As String

    GetSunset = Split(Split(SunData, """sunset"":""", 2)(1), """,""", 2)(0)

End Function

测试/输出:

Sunrise = GetSunrise(s)
? Sunrise
5:42:35 AM

Sunset = GetSunset(s)
? Sunset
7:43:53 PM
© www.soinside.com 2019 - 2024. All rights reserved.