Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Having Issues getting started #263

Open
happyhumorist opened this issue Jan 16, 2024 · 5 comments
Open

Having Issues getting started #263

happyhumorist opened this issue Jan 16, 2024 · 5 comments

Comments

@happyhumorist
Copy link

I was following RedStapler's guide here: https://www.youtube.com/watch?v=CFFLRmHsEAs

But I kept getting errors involving this line of the JsonConverter Module:
json_ParseObject.Item(json_Key) = json_ParseValue(json_String, json_Index)

Its saying Run-Time error'0':
KeyNotFoundError
Dictionary key not found :id

This is the code i'm trying to run:

Sub testJson()

Dim jsontext As String
Dim productObject As Object
jsontext = "{'id':'p01','name':'name 1','price':4.5,'quantity':20}"
Debug.Print jsontext
Set productObject = JsonConverter.ParseJson(jsontext)
Debug.Print productObject("id")

End Sub

I have the MS Scripting Runtime checked in my references.

Do I have something misspelled?

@happyhumorist
Copy link
Author

After redownloading the .bas file and starting a new spreadsheet it now works.

It still won't work with the initial file. I'm not sure why.

@ngluva
Copy link

ngluva commented Jan 16, 2024

What you have is not JSON. Need to use double quotes.
{
"id": "p01",
"name": "name 1",
"price": 4.5,
"quantity": 20
}

When in doubt, I use an online JSON validator. https://jsonlint.com/
Did you know that ChatGPT 3.5 knows about this library and in fact recommends it?

@MarwinZimmermann
Copy link

MarwinZimmermann commented Jun 13, 2024

@happyhumorist

I got exactly the same problem. I am trying to receive data through a http post request. here is my code:

Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")

Url = "Some URL"
objHTTP.Open "POST", Url, False
objHTTP.SetRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
objHTTP.SetRequestHeader "Content-type", "application/json"
objHTTP.SetRequestHeader "Accept", "application/json"
objHTTP.send

Set JSON = ParseJson(objHTTP.responseText)

i=1
For Each Item In JSON
Sheets(1).Cells(i, 1) = Item("SomeItemName")
i = i + 1
Next

The Code works in one workbook and it does not in the other. In both workbooks I imported the same JsonConverter.bas file. The error looks like this:

KeyNotFoundError

and when I go to the debugger it shows me that the code runs into a problem in the following line:

json_ParseObject.Item(json_Key) = json_ParseValue(json_String, json_Index)

Help would be appreciated!
Greetings

@DecimalTurn
Copy link

DecimalTurn commented Jun 13, 2024

I've found the source of the KeyNotFoundError. It is caused by the presence of the Selenium Type Library in your VBA project. Selenium contains a Dictionary object and the prioritization of the references can be such that VBA will use the Selenium version of the Dictionary object instead of the one from Microsoft Scripting Runtime.

Here's a screenshot from the Object Browser (F2):
image

To solve this issue, make sure that Selenium Type Library reference is sitting below Microsoft Scripting Runtime by reducing its priority:
image

@MarwinZimmermann
Copy link

@DecimalTurn

That solved the problem! Many thanks! Appreciated!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants