Sample code for 30+ languages & platforms
PureBasic

Sort JSON Object by Member Key Name

See more JSON Examples

Demonstrates how to sort the members of a JSON object by the key name.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkJsonObject.pb"

Procedure ChilkatExample()

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

    CkJsonObject::ckUpdateString(json,"xyz","1234")
    CkJsonObject::ckUpdateString(json,"abc.xyz","1234")
    CkJsonObject::ckUpdateString(json,"abc.def","1234")
    CkJsonObject::ckUpdateString(json,"abc.aaa","1234")
    CkJsonObject::ckUpdateString(json,"ghi","1234")
    CkJsonObject::ckUpdateString(json,"nmo","1234")

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

    ; This is our initial JSON:

    ; {
    ;   "xyz": "1234",
    ;   "abc": {
    ;     "xyz": "1234",
    ;     "def": "1234",
    ;     "aaa": "1234"
    ;   },
    ;   "ghi": "1234",
    ;   "nmo": "1234"
    ; }

    ; Sort the top-level JSON object by key.
    ascending.i = 1
    caseSensitive.i = 1
    CkJsonObject::ckSort(json,ascending,caseSensitive)

    ; Look at the sorted JSON..
    Debug CkJsonObject::ckEmit(json)

    ; {
    ;   "abc": {
    ;     "xyz": "1234",
    ;     "def": "1234",
    ;     "aaa": "1234"
    ;   },
    ;   "ghi": "1234",
    ;   "nmo": "1234",
    ;   "xyz": "1234"
    ; }

    ; Now sort the members of the "abc" object..
    jsonAbc.i = CkJsonObject::ckCreate()
    If jsonAbc.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkJsonObject::ckObjectOf2(json,"abc",jsonAbc)

    CkJsonObject::ckSort(jsonAbc,ascending,caseSensitive)

    ; Now look at the JSON with the members under "abc" also sorted..
    Debug CkJsonObject::ckEmit(json)

    ; {
    ;   "abc": {
    ;     "aaa": "1234",
    ;     "def": "1234",
    ;     "xyz": "1234"
    ;   },
    ;   "ghi": "1234",
    ;   "nmo": "1234",
    ;   "xyz": "1234"
    ; }


    CkJsonObject::ckDispose(json)
    CkJsonObject::ckDispose(jsonAbc)


    ProcedureReturn
EndProcedure