tentrun
@tentrun
Fullstack (asp.net /react, vue, angular) deletant

Как обработать принятый JSON в unity — выбивает ошибку?

Мужики, выручайте неумного, столкнулся с проблемой, что, отправляю post request на сервер, сервер генерирует ключ, и присылает его в JSON, однако, сколько не гуглил, получаю ошибку.
Запускаю корутину
PostStruct user = new PostStruct()
        {
            Login = "test",
            Password = "test",
            key = "TestKey" // исходящий ключ по дефолту в принципе пустой
        };
 
        string json = JsonUtility.ToJson(user);
 
        //Debug.Log(json);
 
        UnityWebRequest request = UnityWebRequest.Post("https://" + serverURI + "/login.php", json);
 
        byte[] postBytes = Encoding.UTF8.GetBytes(json);
 
        UploadHandler uploadHandler = new UploadHandlerRaw(postBytes);
 
        request.uploadHandler = uploadHandler;
 
        request.SetRequestHeader("Content-Type", "application/json; charset=UTF-8");
 
        yield return request.SendWebRequest();
 
        Debug.Log(request.downloadHandler.text);
 
        PostStruct postStructFromServer = JsonUtility.FromJson<PostStruct>(request.downloadHandler.text);


Вроде бы отсылается и присылается, но на последней сточке, где идет парсинг, выбивает
Код ошибки
ArgumentException: JSON parse error: Invalid value.
UnityEngine.JsonUtility.FromJson (System.String json, System.Type type) (at <bd9566cca22541e58ad28d1fa2849830>:0)
UnityEngine.JsonUtility.FromJson[T] (System.String json) (at <bd9566cca22541e58ad28d1fa2849830>:0)
AuthRequest+<SendRequest>d__3.MoveNext () (at Assets/Auth/Scripts/AuthRequest.cs:58)
UnityEngine.SetupCoroutine.InvokeMoveNext (System.Collections.IEnumerator enumerator, System.IntPtr returnValueAddress) (at <04258d1cdc1044248c2a17a6a31a3cf7>:0)

Но в дебаг логе показывает, что ответ то пришел, чо оно не парсит то, памагите

Array
(
    [Login] => test
    [Password] => test
    [key] => TestKey
)
{"Login":"test","Password":"test","key":"kKCsDu836n"}
UnityEngine.Debug:Log(Object)
<SendRequest>d__3:MoveNext() (at Assets/Auth/Scripts/AuthRequest.cs:56)
UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)

p.s. гуглить пробовал, со структурой игрался
  • Вопрос задан
  • 395 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы