Sample code for 30+ languages & platforms
PureBasic

Load JSON Object from HTTP Response Body

Demonstrates how to load the HTTP response body directly into a JSON object.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkHttpResponse.pb"
IncludeFile "CkHttp.pb"
IncludeFile "CkJsonObject.pb"

Procedure ChilkatExample()

    success.i = 0

    http.i = CkHttp::ckCreate()
    If http.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    resp.i = CkHttpResponse::ckCreate()
    If resp.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkHttp::ckHttpStr(http,"GET","https://www.chilkatsoft.com/exampledata/sample.json","","","",resp)
    If success = 0
        Debug CkHttp::ckLastErrorText(http)
        CkHttp::ckDispose(http)
        CkHttpResponse::ckDispose(resp)
        ProcedureReturn
    EndIf

    ; A JSON object is JSON that begins with "{" and ends with "}"
    json.i = CkJsonObject::ckCreate()
    If json.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    ; If we wish to transfer (instead of copy) the JSON from the HttpResponse to the JsonObject, then add the keyword "TakeResponseBody" to UncommonOptions
    ; This could save memory for extremely large JSON responses.
    CkHttpResponse::setCkUncommonOptions(resp, "TakeResponseBody")

    CkHttpResponse::ckGetBodyJson(resp,json)

    CkJsonObject::setCkEmitCompact(json, 0)
    Debug CkJsonObject::ckEmit(json)

    ; Note: If UncommonOptions contained "TakeResponseBody", then the response BodyStr will now be empty:
    Debug "----"
    Debug CkHttpResponse::ckBodyStr(resp)


    CkHttp::ckDispose(http)
    CkHttpResponse::ckDispose(resp)
    CkJsonObject::ckDispose(json)


    ProcedureReturn
EndProcedure