Sample code for 30+ languages & platforms
PureBasic

Read/Write JSON with Binary Data such as JPEG Files

See more JSON Examples

Demonstrates how binary files could be stored in JSON in base64 format. Creates JSON containing the contents of a JPG file, and then reads the JSON to extract the JPEG image.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkBinData.pb"
IncludeFile "CkJsonObject.pb"

Procedure ChilkatExample()

    success.i = 0

    ; First load a small JPG file..
    bd.i = CkBinData::ckCreate()
    If bd.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkBinData::ckLoadFile(bd,"qa_data/jpg/starfish20.jpg")
    ; Assume success, but your code should check for success..

    ; Create JSON containing the binary data in base64 format.
    json1.i = CkJsonObject::ckCreate()
    If json1.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkJsonObject::ckUpdateBd(json1,"starfish","base64",bd)

    jsonStr.s = CkJsonObject::ckEmit(json1)
    Debug jsonStr

    ; Here's the output:
    ; {"starfish":"/9j/4AAQSkZJRgA ... cN2iuLFsCEbDGxQkI6RO/n//2Q=="}

    ; Let's create a new JSON object, load it with the above JSON, and extract the JPG image..
    json2.i = CkJsonObject::ckCreate()
    If json2.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkJsonObject::ckLoad(json2,jsonStr)

    ; Get the binary bytes.
    bd2.i = CkBinData::ckCreate()
    If bd2.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkJsonObject::ckBytesOf(json2,"starfish","base64",bd2)

    ; Save to a file.
    success = CkBinData::ckWriteFile(bd2,"qa_output/starfish20.jpg")

    Debug "Success."


    CkBinData::ckDispose(bd)
    CkJsonObject::ckDispose(json1)
    CkJsonObject::ckDispose(json2)
    CkBinData::ckDispose(bd2)


    ProcedureReturn
EndProcedure