You can use `JsonObject` as a standin for any object.
    
    
    import json
    
    type
      RetVal = object
        code: string
        message: string
        data: JsonNode
    
    const js1 = """
    {
            "code": "tk.01",
            "message": "Token in data field",
            "data": "string"
    }
    """
    
    const js2 = """
    {
            "code": "tk.01",
            "message": "Token in data field",
            "data": [1, 2, 3, 4]
    }
    """
    
    const js3 = """
    {
            "code": "tk.01",
            "message": "Token in data field",
            "data": {"key": "value"}
    }
    """
    
    proc main() =
      let retVal1 = parseJson(js1).to(RetVal)
      echo retVal1.data.to(string)
      
      let retVal2 = parseJson(js2).to(RetVal)
      echo retVal2.data.to(seq[int])
      
      let retVal3 = parseJson(js3).to(RetVal)
      for key, value in retVal3.data.pairs():
        echo key, ": ", value.to(string)
    
    main()
    
    # Output:
    #
    # string
    # @[1, 2, 3, 4]
    # key: value
    
    
    
    Run

Reply via email to