private string ParseToJson()
    {
        var bytes = archive.Serialize_Binary();

        encodedData = Convert.ToBase64String(bytes, Base64FormattingOptions.InsertLineBreaks);


        var ghData = new GHData();

        ghData.algo   = encodedData;
        ghData.values = GHInput.ToGHValueList(ghInputs);

        var json = JsonConvert.SerializeObject(ghData);

        return(json);
    }
    // Start is called before the first frame update
    void Start()
    {
        client = new RestClient(serviceUrl);

        archive = new GH_Archive();
        archive.ReadFromFile(Application.streamingAssetsPath + "\\" + ghFile);

        var root = archive.GetRootNode;
        var def  = root.FindChunk("Definition") as GH_Chunk;
        var objs = def.FindChunk("DefinitionObjects") as GH_Chunk;

        if (objs != null)
        {
            int count = objs.GetInt32("ObjectCount");

            var inputGuids = new List <Guid>();
            var inputNames = new List <string>();

            for (int i = 0; i < count; i++)
            {
                var obj       = objs.FindChunk("Object", i) as GH_Chunk;
                var container = obj.FindChunk("Container") as GH_Chunk;

                var name = container.GetString("Name");
                if (name == "Group")
                {
                    var nickname = container.GetString("NickName");
                    if (nickname.IndexOf("RH_IN:") != -1)
                    {
                        var inputname = nickname.Replace("RH_IN:", "");
                        var itemguid  = container.GetGuid("ID", 0);
                        inputNames.Add(inputname);
                        inputGuids.Add(itemguid);
                    }
                }
            }

            for (int i = 0; i < count; i++)
            {
                var obj       = objs.FindChunk("Object", i) as GH_Chunk;
                var container = obj.FindChunk("Container") as GH_Chunk;

                var instanceguid = container.GetGuid("InstanceGuid");
                if (inputGuids.Contains(instanceguid))
                {
                    var    index        = inputGuids.IndexOf(instanceguid);
                    var    inputName    = inputNames[index];
                    var    componetName = container.GetString("Name");
                    object value        = null;
                    switch (componetName)
                    {
                    case ("Point"):
                        value = new float[] { 0.5f, 0.5f, 0.5f };
                        break;

                    case ("Number"):
                        value = 0.5f;
                        break;

                    case ("Integer"):
                        value = 10;
                        break;

                    default:
                        break;
                    }

                    var ghInput = new GHInput(componetName, inputName, value);
                    ghInputs.Add(ghInput);
                }
            }
        }

        SendGHData();
    }