Modify json result and send it back, VBA

Gontran Harvey
Gontran Harvey used Ask the Experts™
on
I have a result from an API and the way this API work, to modify even only one field, I have to send back all fields.
What I whant is to modify the fields I whant and send back the info to the API.
I know I can use string function to do that, but I whant to know if theres a library or sommething more simple that I can use to just change some part of the result.
Here what I receive from the API:

{
  "id": "a05b0aa4-d622-4bda-8a0d-0b287bc43c7a",
  "idStatus": null,
  "isUser": false,
  "company": null,
  "department": null,
  "companyID": "",
  "contactType": "Contact",
  "firstName": "test302",
  "lastName": "test2",
  "lastResults": null,
  "messengerID": null,
  "middleName": null,
  "nameSuffix": null,
  "namePrefix": null,
  "fullName": "test302 test2",
  "referredBy": null,
  "salutation": "test302",
  "jobTitle": null,
  "emailAddress": "dfgfdg£g.com",
  }

Open in new window

I need to send back the exact same thing but with some change. Exemple, I would like to change the "firstname" to something else.
Comment
Watch Question

Do more with

Expert Office
EXPERT OFFICE® is a registered trademark of EXPERTS EXCHANGE®
Mike in ITIT System Administrator
Distinguished Expert 2017
Commented:
I don't think there are any built-in libraries which would handle this other than the functions that you already mentioned. You might be able to find some 3rd party libraries that might help.

Author

Commented:
I did not want to go there, but if I have to I will!! thanks.
Here the function I created for that.

Public Function strNewFieldValue(strAPI_String As String, strField As String, strNewValue As String) As String
    Dim lPosition As Long
    Dim lPos_2_Point As Long
    Dim lPos_Virgule As Long
    Dim lNb_Caractere As Long
    Dim strActualFieldData As String
    Dim strLeftPart As String
    Dim strRightPart As String
    
    
    'cette function remplace la valeur du champs par une autre valeur
    'La strNewValue est une valeur text ou marquer null si ont veut une valeur null dans le champs
    'La fonction s'occupe de mettre les extra double guillemet et les enlever pourla valeur null
    
    If strNewValue <> "null" Then
        strNewValue = """" & strNewValue & """"
    End If
    
    strNewValue = " " & strNewValue & ","
    
    lPosition = InStr(1, strAPI_String, "" & strField & "")
    If lPosition <> 0 Then
        lPos_2_Point = InStr(lPosition, strAPI_String, ":")
        lPos_Virgule = InStr(lPosition, strAPI_String, ",")
        lNb_Caractere = lPos_Virgule - lPos_2_Point
        
        strActualFieldData = Mid(strHTML, lPos_2_Point + 2, lNb_Caractere - 2)
        
        strLeftPart = Left(strAPI_String, lPos_2_Point)
        
        strRightPart = Right(strAPI_String, Len(strAPI_String) - lPos_Virgule)
        
        strNewFieldValue = strLeftPart & strNewValue & strRightPart
        
        Debug.Print strNewFieldValue
    Else ' ce champs ne semble pas existé
        strNewFieldValue = ""
    End If
    
End Function

Open in new window

C++ 11 Fundamentals

This course will introduce you to C++ 11 and teach you about syntax fundamentals.

Mike in ITIT System Administrator
Distinguished Expert 2017

Commented:
Does the code you wrote solve the problem?

If it doesn't are there any errors or parts that don't work the way you would like them to?

Author

Commented:
yes work perfectly!!
thanks

Author

Commented:
Because there is no real solution exept the code I just posted

Do more with

Expert Office
Submit tech questions to Ask the Experts™ at any time to receive solutions, advice, and new ideas from leading industry professionals.

Start 7-Day Free Trial