首页 > 解决方案 > Unity将对象序列化为Json

问题描述

我试图在 Unity 中简单地将对象序列化为 json。我找到了几篇关于这个主题的文章,但似乎没有任何效果。它不会直接抛出异常,但不会将对象转换为 json 字符串。我已经对这些进行了大量研究并尝试了各种样本。我不确定问题是类还是调用转换为 json 的逻辑。我可以使用 .net 轻松转换,但这是针对 MonoScript 中的 Unity,所以过程似乎有点不同。我假设当您将对象转换为 json 字符串时,它不应该将基数列为“null”。它还在转换后传入一个空的 json 字符串。

在此处输入图像描述

用户登录类:

    using UnityEngine;
using System.Collections;
using System;

[Serializable]
public class UserLogIn : MonoBehaviour
{
    public string Email;
    public string Password;
}

这是我在统一脚本中的代码:

private UserLogIn _LogIn = new UserLogIn();

    public void SetText(string text)
    {
        //[SerializeField]
        //UserLogIn _LogIn = new UserLogIn();
    //WhiteBoxGamingTestRequest();  
    _LogIn.Email = "testemail@gmail.com";
        _LogIn.Password = "12345";
        string json = JsonUtility.ToJson(_LogIn);
        Debug.Log(json);

        //User_LogIn(_login);

        //text = _bolResponse.ToString();
        //Text txt = transform.Find("Text").GetComponent<Text>();
        //txt.text = text;       
    }

我试过这个: 在 Unity 中序列化和反序列化 Json 和 Json 数组

似乎仍然无法正常工作。寻找建议或更正。

转换后 json = {} 它应该是一个包含值的字符串。Unity的json转换器坏了吗?

转换: 在此处输入图像描述

标签: c#jsonunity3d

解决方案


我终于找到了答案。为了在 Unity 中创建一个可转换为 json 的对象,它似乎需要是一个常规的 c# 对象。我不确定你为什么不能使用 Mono Behavior,但这似乎是我课堂上的问题。所以我希望这对将来的其他人有所帮助,因为 Unity 网站就像泥泞一样清晰。

    [System.Serializable]
public class UserLogIn
{
    public string Email;
    public string Password;
}

这是 json 字符串转换后的样子:

{"Email":"testemail@gmail.com","Password":"12345"}

还想在 7:43 左右将此视频归功于它,您可以开始查看转换过程https://youtu.be/oJrAT8L4BrA


推荐阅读